2014-03-13 102 views
0

我有腳本根據請求運行並使用CodeDomProvider進行編譯。這裏有一個例子:暫停執行,直到給出響應

var yes = SendYesNo(); 

if (yes) 
    // Do something 
else 
    // Do something else 

現在。 SendYesNo顯示一個包含用戶輸入的框。我想暫停該行上的腳本,直到設置了響應。然後,接受並應用到變量並繼續執行。到目前爲止,我使用了等待/異步,但我不喜歡這個想法。用別的東西可以嗎?

+1

是這個WinForms,WPF,WebBased,控制檯應用程序? –

+0

@ErikPhilips WinForms。 – user3265040

+0

SendYesNo做什麼?你不能只使用ShowDialog? – aquinas

回答

1

您可以使用返回參數的模態窗口。如果所需輸入更復雜,您可以使用標準MessageBox或自定義表單。

喜歡的東西:

public class SomeForm : Form 
{ 
    public bool yesNo 
    { 
     get 
     { 
      return yesNo; 
     } 
     set 
     { 
     //set value according to your logic 
     } 
    } 
} 

,並在主窗體調用它:

using (var form = new SomeForm()) 
{ 
    if (form.ShowDialog() == DialogResult.OK) 
    { 
     var yesNo = form.yesNo; 
     if (yes) 
     // Do something 
     else 
     // Do something else 
    } 
} 

的情況下,它只是一個是/否消息框,你可以參考一下: How do I create a message box with "Yes", "No" choices and a DialogResult?

+0

你誤解了我的問題。來自用戶的輸入甚至不是消息框,輸入甚至不重要。我只想知道如何停止執行,直到給出響應。無論它是否是WinForms都沒關係,因爲我不會爲此使用WinForms。 – user3265040

+0

如果輸入不重要,那麼爲什麼要等待呢? – Brad

+0

基本上有兩種情況: 1)您需要等待輸入,並且不希望計算繼續。你的方法是同步的,它不會超過它直到它返回。 2)你不想等待輸入,但你想要處理結果,一旦你得到它。在這種情況下,您可能想在輸入可用時使用線程和回調/事件。 哪一個是你的情況? –

相關問題