我在WPF(使用.Net 4.0)應用程序中運行同步過程中需要在其中停留幾個等待用戶準備就緒的類函數。因此,在該過程中,我需要彈出一些對話框,直到用戶單擊「確定」才暫停該過程。在類方法中調用對話框
什麼是最乾淨的方式來實現這一點?
如果有某種方法讓函數發信號通知MainWindow調用對話框,我很猶豫要用WPF對話框來贅述類函數。還是我不應該擔心這個?
我在WPF(使用.Net 4.0)應用程序中運行同步過程中需要在其中停留幾個等待用戶準備就緒的類函數。因此,在該過程中,我需要彈出一些對話框,直到用戶單擊「確定」才暫停該過程。在類方法中調用對話框
什麼是最乾淨的方式來實現這一點?
如果有某種方法讓函數發信號通知MainWindow調用對話框,我很猶豫要用WPF對話框來贅述類函數。還是我不應該擔心這個?
我會使用以下內容,直到您確定更好的重構方式。不知道您的任何特定架構:
void MyLongProcedure() {
// do some stuff
if(GetDialog() == DialogResult.OK) { }
// do some more stuff
if(GetDialog() == DialogResult.OK) { }
}
DialogResult GetDialog() {
return myDialog.ShowDialog();
}
如果曾經停止程序,那麼你可以添加一張支票DialogResult.Cancel
和實現體面退出的長過程的選項。
它很難得到有關您的應用程序沒有進一步的細節一個確切的答案,但我喜歡的東西下面去(代碼可能無法實際編譯原樣)
public class WaitForUserProcedureImpl : IWaitForUserProcedure
{
public void DoSomething(Action pause)
{
// do stuff
pause(); // pause
// do more stuff
// ....
pause();
}
}
public class MainWindow: Window
{
private void button_click(object sender)
{
WaitForUserProcedureImpl proc = new WaitForUserProcedureImpl();
Action myPauseAction = new Action(
()=>
{
MessageBox.Show("Press ok to continue","Press ok to continue",MessageBoxButtons.OK);
}
);
proc.DoSomething(myPauseAction);
}
}
是程序同步或異步?什麼版本的.Net? – IAbstract
@IAbstract同步。版本4. – user754852
@Blam是的,對不起。 – user754852