有沒有辦法同時調用多種方法?我有一個在加載數據加載數量驚人的WinForms應用程序:異步調用多種方法
private void form1_Load(object sender, EventArgs e)
{
LoadValues1();
LoadValues2();
LoadValues3();
LoadValues4();
LoadValues5();
LoadValues6();
LoadValues7();
LoadValues8();
}
這些方法檢索數據和填充的DevExpress LookUpEdits(類似於Windows dropdownlists),所以他們都看起來像這樣:
DBContext dbContext = new DBContext();
ObservableCollection<string> values1 =
new ObservableCollection<string>((from i in dbContext.Items
where i.Value1 != null
&& i.Value1.Length > 0
orderby i.Value1
select i.Value1).Distinct());
lookupValues1.Properties.DataSource = descModelYear;
DevExpress.XtraEditors.Controls.LookUpColumnInfoCollection colInfo = lookupValues1.Properties.Columns;
colInfo.Clear();
colInfo.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo("Column"));
colInfo[0].Caption = "Values 1";
和一些方法需要一段時間才能完成,但他們都不是彼此依賴,所以我想我可以做他們都在同一時間:
Task.Factory.StartNew(() => LoadValues1());
Task.Factory.StartNew(() => LoadValues2());
etc.
BU t當第二個任務運行時,我不斷收到錯誤信息,稱控件不能從與創建它不同的線程訪問。
任何幫助表示讚賞!
在方法'LoadValuesXXX'你試圖操縱UI(現在從另一個線程)這是不好的。有數百個關於此主題的現有問題/答案。 – spender 2013-03-26 18:01:43
一旦你解決了交叉線程問題,你可能想知道你可以使用一個縮寫來在一個單獨的線程中運行一組動作,並等待它們完成,如下所示:'Parallel.Invoke( '1,action2,action3,action4,action5);' – 2013-03-26 18:39:57