2013-03-18 14 views
-3

這裏....多任務窗口中形成,在c#在我的代碼

List<Task> t; 

private void Form1_Load(object sender, EventArgs e) 
{ 
    t = new List<Task>(); 
    t.Add(Task.Factory.StartNew(() => Download())); 
    t.Add(Task.Factory.StartNew(() => Display())); 
} 

現在顯示方法,當我隱藏它給我任何控制「跨線程異常」,並告訴它由主線。

+0

'display'方法的代碼? – 2013-03-18 17:38:08

+1

已有數百個關於「跨線程異常」的問題。在頁面右上角的搜索框中鍵入或使用谷歌。 – 2013-03-18 17:39:25

回答

0

很明顯,Display方法正在另一個線程上運行,然後在其上創建它。

您只能從主線程更改WinForm控件。您需要檢查控件上的InvokeRequired是否爲true,然後根據需要調用該方法。

更新控件的任何信息。

你可以試試這個方法:

if (this.InvokeRequired) 
{ 
    this.Invoke((MethodInvoker)delegate { update the ui control here}); 
} 
0

你必須調用主線程上的操作。您需要執行以下操作:

Invoke((Action)(() => updateProgressBar())); 

這將在主UI線程上運行更新。