2012-07-17 85 views
0

您好我有類似下面的方法:爲什麼線程在c#中不能正確執行?

void Foo 
{ 
MethodInvoker method=delegate{ 
frm2 frm=new frm2(); 
frm.show(); 
} 

,我有這種形式做到這一點的datagridview在FRM2內從DB和加載數據的重負載內DataGridView控件。

問題是當數據連接到frm2中的datagridview時,主線程(form1線程)被凍結。爲什麼會發生這種情況?

我在這兩個項目中創建了兩個不同的項目,並將frm2和form1分開,結果正常,沒有發生任何凍結。

回答

6

嗯,我認爲在WinForms中有任何UI操作的單線程。 如果您在Form構造函數中進行數據庫檢索,那麼這將在UI線程中執行,並且所有表單都會凍結。

您應該創建一個新線程來從數據庫中獲取數據,並在以後在UI線程的UI中進行設置。

相關問題