c# - 如何在不按住 Windows 窗体应用程序 C# 中的按钮的情况下连续更新文本框?

标签 c# multithreading event-handling multitasking

我需要在单击按钮后不断更新我的文本框,但按钮应该按原样执行其剩余任务。

简单的是,当点击事件发生时,文本框不应该等待点击事件完成,而是开始不断更新它的文本。

示例代码

using System.threading;

namespace name
{
    public class sA
    {
        public void th()
        {
           textbox.invoke(new MethodInvoke(()=> textbox.AppendText("hello\n")));
        }

        private void Button1Click(object sender, EventArgs e)
        {
           thread cThread=new thread(th);
           cThread.start();

           while(true)
           {
               // do any thing
           }
        }
    }
}

重要::当它执行事件“Cthread.start();”时文本框应立即开始更新文本,而单击事件的其余功能(如“while 循环”)应并行执行。

enter image description here

最佳答案

如果这是在 Windows 窗体中.. 然后在循环中的任何地方添加 Application.DoEvents(); 例如

private void Button1Click(object sender, EventArgs e)
{
   thread cThread=new thread(th);
   cThread.start();
   while(true)
   {
     // do any thing   
     textbox.Invalidate();
     Application.DoEvents(); // Releases the current thread back to windows form
                          // NOTE Thread sleep different in Application.DoEvents();
                          //Application.DoEvents() is available only in System.Windows.Forms
   }
} 

希望这对你有帮助,虽然晚了.. :)

关于c# - 如何在不按住 Windows 窗体应用程序 C# 中的按钮的情况下连续更新文本框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10654121/

相关文章:

c# - T-Sql 选择并将许多行和列连接成一行和一列

java - 我对在多线程 java 中使用静态方法感到困惑?

javascript - 什么时候 event.target.value 不是字符串?

Python线程,新线程卡住

python - python 中的多线程未按预期工作

javascript - 同步相互依赖的 Dojo 小部件/值

.net - 如何延迟事件处理程序以首先运行一小段代码?

c# - 知道在 C# 中选择了组合框中的哪个选项吗?

c# - 在 .net 中针对来自 visual studio 测试客户端的不同机器对 WCF 进行单元和性能测试的最佳方法是什么

c# - 无法加载文件或程序集 Microsoft.Owin.Security.OAuth,版本 = 2.0.0.0