2015-07-20 67 views
1

我正在使用Visual Studio 2013創建一個winform。我可以構建並運行表單。但是,偶爾,當表單執行任務時,我再也看不到它了。也就是說,我在任務欄中看到它,如果將鼠標懸停在其圖標上,我可以預覽它,但單擊該圖標不會顯示該窗體。我也無法通過alt-tab訪問它。表單完成任務後,它會彈出。我無法從任務欄中選擇winform應用程序

我不確定這是否相關,但當我嘗試調試窗體時會發生相同的行爲。我可以運行並附加它,但是當我單擊窗體上的一個按鈕時,整個窗體就會消失。一旦調試會話完成,它就會回來。

+2

*「表單正在執行任務時」*您可能在UI線程上運行了長時間的計算,這妨礙了您的應用程序的聚焦和重繪。將「任務」移動到某種「任務」或後臺線程。如果沒有看到你正在執行的「任務」,很難告訴你該怎麼做。 –

+0

你說得對,我正在進行長時間的計算,包括查詢外部服務器。我遵循了sparta93的建議,並解決了我的問題。 – alexgbelov

回答

0

如果你的任務在一個方法中,就像下面這樣調用它,它不會凍結UI。要運行您的任務,只需撥打BeginProcessingAsync(d);即可。

private async void BeginProcessingAsync(Data d) 
{ 
    //Execute the long running task asynchronously 
    await Task.Run(() => yourMethod(d)); 

    //Anything after the await line will be executed only after the task is finished. 
    DoSomethingWithFinishedData(d); 
} 

另外,請注意:如果您在使用.NET的新版本,你可能需要使用await Task.Factory.StartNew(() => yourMethod(d));代替以上。

+0

謝謝。你知道在調試表單時是否應該發生相同的行爲? – alexgbelov

+0

@ user218750我不完全確定,但可能不是......你應該試試看,並告訴我 – sparta93

+0

我的意思是,當我調試窗體時,它會消失,直到我逐步完成所有步驟。 – alexgbelov

相關問題