2016-08-08 69 views
0

我使用Thread來啓動兩個函數AllCase並且並行運行它們。使用線程時UI不響應

Thread t1, t2; 
t1 = new Thread(new ThreadStart(AllCase)) 
{ 
    Name = "Thread1" 
}; 
t1.Start(); 

t2 = new Thread(new ThreadStart(AllCase)) 
{ 
    Name = "Thread2" 
}; 
t2.Start(); 
t1.Join(); 
t2.Join(); 

Thread開始,我不能與應用程序的UI交互。

我使用BackgroundWorker閱讀。

但我想Name = "Thread1"使用,像這樣:

int idx = int.Parse(Thread.CurrentThread.Name.Replace("Thread", "")) - 1; 

idx知道這個過程[IDX]易操縱。

BackgroundWorker在我的情況下無法正常工作。

那麼,有什麼方法可以解決我的問題嗎?

回答

3

刪除這兩條線:

t1.Join(); 
t2.Join(); 

和你的GUI應該重新變得敏感。除非你必須等待按照這個順序完成這些方法,否則你並不需要使用線程。

+0

它的工作。刪除兩行會出現我的代碼問題。但我會修復。非常感謝你。 – vanloc

+0

不客氣。出於好奇,爲什麼你使用join來等待線程完成? –

+0

在我的情況下,'t1'會收集一個數據,'t2'需要這些數據來處理。但是我讀了你的評論:「除非你必須等待按照這個順序完成這些方法,否則你並不需要使用線程。」我理解它。謝謝@mongzhu。 – vanloc