【发布时间】:2011-11-07 00:37:20
【问题描述】:
我有一个问题,我不想使用多线程应用程序,因为我正在测试一些代码,我需要它是单线程的。
只有在完成后才会更新文本框。我需要以某种方式一直保持更新。除了第二个线程还有其他方法吗?
【问题讨论】:
我有一个问题,我不想使用多线程应用程序,因为我正在测试一些代码,我需要它是单线程的。
只有在完成后才会更新文本框。我需要以某种方式一直保持更新。除了第二个线程还有其他方法吗?
【问题讨论】:
只有在完成后才会更新文本框。我需要以某种方式一直保持更新。是否有另一种方法可以期待第二个线程?
没有一个好的方法可以做到这一点。问题是,如果您在 UI 线程上执行代码,则 UI 线程无法处理消息泵中的消息,包括用于刷新 TextBox 的消息,直到您的工作完成。
在 Windows 窗体中,您可以通过调用 Application.DoEvents() 来强制应用程序处理这些消息,但这确实是个坏主意。使用BackgroundWorker 或其他一些多线程技术将工作推送到后台线程会更好(也更安全!)。
【讨论】:
您可以尝试以下方法:
// in for loop
tbxMyTextBox.Text = "New text!";
tbxMyTextBox.Refresh();
我记得过去不得不做类似的事情。
【讨论】: