在C#WinForms中,如何在不中断其他代码执行的情况下分配标签文本几秒钟并再次将其删除?

耙子

我正在创建一个待办事项列表程序,您可以在其中添加任务,完成后,选中一个复选框,单击“更新”,然后将该任务从列表中删除(已完成)。

我创建了一个游戏化版本,可以为您完成的每项任务获得XP积分。我只是根据任务字符串的长度来计算XP。然后,总XP会显示在WinForm的标签文本上。

然后我想到了这样的想法:我希望标签显示总XP,仅显示几秒钟从任务中获得的XP,然后再次显示总XP。

我只是不知道如何在没有整个代码等待几秒钟的情况下执行此操作。我想它需要在我没有经验的单独线程中运行。

1) XPlabel shows: 1455 XP
2) User completes task
3) XPlabel shows for 2 seconds: +254 XP
4) XPlabel shows: 1709 XP

所有其他代码不会一直等待那2秒钟,而是继续运行,执行其他任务。就像更新数据存储文本文件一样。

但是,正如我提到的那样,这样做会带来缓慢的体验,因为其他用于存储任务的数据文本文件中写入/删除的代码也必须等待几秒钟。整个用户界面将保留这几秒钟。

所以...

在代码保持运行的情况下,有什么办法可以做到这一点?

代码摘录:

//removes checked items
                foreach (string item in todolistCheckbox.CheckedItems)
                {
                    string strFilePath = "tododo.data";
                    string strSearchText = item;
                    string strOldText;
                    string n = "";
                    StreamReader sr = File.OpenText(strFilePath);
                    while ((strOldText = sr.ReadLine()) != null)
                    {
                        if (!strOldText.Equals(strSearchText))
                        {
                            n += strOldText + Environment.NewLine;
                        }
                        //XP Calculation
                        xpread();
        I WANT -->      xplabel.text = xp; --- 2 seconds
                        int x;
                        Int32.TryParse(xp, out x);
                        int buffxp = strOldText.Length * 8 + x;
                        string xpupd = buffxp.ToString();
                        //write
                        xpwrite(xpupd);
                        xpupdate(xpupd);
                        levelup(xpupd);
                    }
                    sr.Close();
                    File.WriteAllText(strFilePath, n);

                }

/干杯

马修

您可以使用ThreadPool将其旋转到另一个线程上,并对其进行管理。

ThreadPool.QueueUserWorkItem(new WaitCallback(myFunction), xp);

public void myFunction(object state)
{
  int xp = (int)state;

  myLabel.Invoke((MethodInvoker)(() => myLabel.SelectedText = xp)); //Thread Safe Label Updater
  new System.Threading.ManualResetEvent(false).WaitOne(2000); //Wait 2 Seconds
  myLabel.Invoke((MethodInvoker)(() => myLabel.SelectedText = string.Empty)); //Sets the label to empty. Could also be used to put back to totalXP
}

以及您可能需要的任何其他选项。

编辑:请确保包括using System.Threading您执行的任何线程

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在WPF中显示标签几秒钟?

来自分类Dev

如何在WPF中显示标签几秒钟?

来自分类Dev

如何在不中断python循环的情况下执行条件

来自分类Dev

如何在不中断make过程的情况下中断make中的过程

来自分类Dev

Linux,如何在GDB中运行c代码之前等待几秒钟

来自分类Dev

如何使用C#在没有thread.sleep的情况下增加延迟几秒钟

来自分类Dev

如何在不中断Unity-2D会话的情况下删除eog?

来自分类Dev

如何在不中断Kinect的情况下运行方法

来自分类Dev

如何在不中断客户端的情况下向 C# 界面中的方法添加参数?

来自分类Dev

C ++如何在不中断程序的情况下输入用户值

来自分类Dev

有什么办法可以在不中断执行的情况下查看正在执行的代码行?

来自分类Dev

如何在程序执行中休息几秒钟

来自分类Dev

如何在不影响文本的情况下删除 <a> </a> 标签?

来自分类Dev

如何在不中断编号的情况下将代码添加到数字列表的项目中?

来自分类Dev

如何在不删除Linux中其他行的情况下删除标题?

来自分类Dev

C ++:几秒钟后如何执行函数?

来自分类Dev

如何在不执行其他查询的情况下使图表中的计数与众不同?

来自分类Dev

如何在不删除其他变量的情况下更新Java中的属性值

来自分类Dev

如何在默认情况下突出显示RecyclerView的第一行,然后在选择其他行时将其删除?

来自分类Dev

如何在不中断行长计算的情况下将命令包含在Bash的PS1中?

来自分类Dev

如何在不中断行长计算的情况下将命令包含在Bash的PS1中?

来自分类Dev

如何在QML中显示图像几秒钟?

来自分类Dev

如何在不中断异步/等待的情况下创建HttpWebRequest?

来自分类Dev

如何在不中断循环的情况下返回值?

来自分类Dev

如何在不中断关注点的情况下触发JQuery操作

来自分类Dev

如何在不中断用户体验的情况下对齐中心?

来自分类Dev

stunnel - 如何在不中断的情况下更换服务器证书

来自分类Dev

如何在聚合后不将其他列包括在GROUP BY中的情况下将其他列添加到SELECT查询中?

来自分类Dev

如何在不删除和更改其他文本的情况下通过提示向 textarea 添加多个值?

Related 相关文章

  1. 1

    如何在WPF中显示标签几秒钟?

  2. 2

    如何在WPF中显示标签几秒钟?

  3. 3

    如何在不中断python循环的情况下执行条件

  4. 4

    如何在不中断make过程的情况下中断make中的过程

  5. 5

    Linux,如何在GDB中运行c代码之前等待几秒钟

  6. 6

    如何使用C#在没有thread.sleep的情况下增加延迟几秒钟

  7. 7

    如何在不中断Unity-2D会话的情况下删除eog?

  8. 8

    如何在不中断Kinect的情况下运行方法

  9. 9

    如何在不中断客户端的情况下向 C# 界面中的方法添加参数?

  10. 10

    C ++如何在不中断程序的情况下输入用户值

  11. 11

    有什么办法可以在不中断执行的情况下查看正在执行的代码行?

  12. 12

    如何在程序执行中休息几秒钟

  13. 13

    如何在不影响文本的情况下删除 <a> </a> 标签?

  14. 14

    如何在不中断编号的情况下将代码添加到数字列表的项目中?

  15. 15

    如何在不删除Linux中其他行的情况下删除标题?

  16. 16

    C ++:几秒钟后如何执行函数?

  17. 17

    如何在不执行其他查询的情况下使图表中的计数与众不同?

  18. 18

    如何在不删除其他变量的情况下更新Java中的属性值

  19. 19

    如何在默认情况下突出显示RecyclerView的第一行,然后在选择其他行时将其删除?

  20. 20

    如何在不中断行长计算的情况下将命令包含在Bash的PS1中?

  21. 21

    如何在不中断行长计算的情况下将命令包含在Bash的PS1中?

  22. 22

    如何在QML中显示图像几秒钟?

  23. 23

    如何在不中断异步/等待的情况下创建HttpWebRequest?

  24. 24

    如何在不中断循环的情况下返回值?

  25. 25

    如何在不中断关注点的情况下触发JQuery操作

  26. 26

    如何在不中断用户体验的情况下对齐中心?

  27. 27

    stunnel - 如何在不中断的情况下更换服务器证书

  28. 28

    如何在聚合后不将其他列包括在GROUP BY中的情况下将其他列添加到SELECT查询中?

  29. 29

    如何在不删除和更改其他文本的情况下通过提示向 textarea 添加多个值?

热门标签

归档