2017-09-22 52 views
0

如何使任務阻塞當前線程中的代碼執行?像Windows窗體ShowDialog()方法:C#UWP任務,將阻止在UWP中執行代碼

int a = 1; 

Form2 f2 = new Form2(); 
f2.ShowDialog(); 

int b = 2; 

我已經創建了自定義消息框控件,我需要實現此功能。

+0

Form2應該有'OnClosed'事件。您可以將您的代碼移動到您想要執行的任何位置,然後執行到「OnClosed」。 – AVK

回答

0

我建議您應該嘗試實施async/await版本而不是PushFrame版本。

你可以閱讀this article瞭解更多關於PushFrame。但是這將不再被UWP支持。


執行async/await版本。您需要返回TaskShowDialog方法中具有GetAwaiter方法的任何其他類。然後使用AutoResetEvent/ManualResetEvent運行任務和WaitOne。在您的CustomMessageBoxClosed事件中,SetAutoResetEvent/ManualResetEvent要讓Task返回。然後您的ShowDialog將繼續由您的await.