2013-08-28 18 views
3

我看槽谷歌有點,但不能讓它工作。當另一個進程正在運行時啓用按鈕點擊

我有,當我按下一個按鈕,做了一些處理。

我想添加一個「殺死所有」按鈕按下時terrminate萬萬,但是當我開始一個過程,我不能推動任何其他按鈕,直到其finnished。

private void button_checkZero_phones_Click(object sender, EventArgs e) 
    { 
     Thread thread = new Thread(new ThreadStart(WorkThreadFunction)); 
     thread.Start(); 
    } 

private void button_kill_all_Click(object sender, EventArgs e) 
    { 
     System.Environment.Exit(1); 
    } 
+3

聽起來像你正在做的UI線程上的處理,將鎖定應用程序,直到過程完成。保持UI響應的唯一方法就是做另一個線程 – NDJ

+0

我們的處理調度員東西放置在同一個線程.. –

+0

請提供一些代碼,你開始過程 – MikkaRin

回答

2

您必須在異步方法中運行「全部殺死」方法。當您運行一個漫長的過程時,主線程總是被阻塞。

  1. 一個BackgroundWorker
  2. 另一個線程
  3. 另一個任務
  4. : - 在運行殺死所有 WinForm Application UI Hangs during Long-Running Operation

    是使用下面的方法之一:關於您的問題

    更多信息使用異步/等待

  5. 反應式伸展ons

有幾種方法可以通知您所有進程都已終止!這取決於你使用哪種方法。

+1

沃克完美的作品! ty – susparsy

+0

我現在有另一個問題,工作人員像查詢一樣工作,當我按下按鈕一旦它運行一次,但當我再次推它時,它運行兩次 – susparsy

+1

當它點擊時禁用按鈕! –

0

這是一個Windows應用程序?如果你感覺老派並且喜歡清理其他開發者,那麼在你的死亡循環中堅持一個Application.DoEvents()

你知道你想要。

,如果你想這樣做,而不從所有同行接受蔑視,請參閱this question and answer

相關問題