我有一個設置並顯示文本框的窗體。的形式負載的方法,我從一個完全獨立的類名Processing
開始一個新的線程:從另一個類和線程C追加到文本框#
private void Form1_Load(object sender, EventArgs e)
{
Processing p = new Processing();
Thread processingThread = new Thread(p.run);
processingThread.Start();
}
這裏是處理類。我想這樣做的是創造Utilities
類中的方法,讓我更新來自任何類,我需要的文本框:
public class Processing
{
public void run()
{
Utilities u = new Utilities();
for (int i = 0; i < 10; i++)
{
u.updateTextBox("i");
}
}
}
然後最後Utilites
類:
class Utilities
{
public void updateTextBox(String text)
{
//Load up the form that is running to update the text box
//Example:
//Form1.textbox.appendTo("text"):
}
}
我已閱讀Invoke
方法,SynchronizationContext
,後臺線程和其他所有內容,但幾乎所有示例都使用與Form
線程相同的類中的方法,而不是單獨的類。
使用單獨的線程更改界面時要小心;最後可能會有幾個例外。他們通常建議更改接口以不離開當前的線程。 – Greg 2013-02-28 19:50:16
什麼UI技術,WPF,WinForms?在WPF中,Dispatcher使得這種操作變得非常簡單...... – 2013-02-28 19:51:58
你沒有指定你使用的.NET框架的版本,但是如果你使用的是.NET 4.5,可以考慮使用'async' /'await'來保持你的UI響應而不是線程。 – 2013-02-28 19:56:45