我有腳本根據請求運行並使用CodeDomProvider進行編譯。這裏有一個例子:暫停執行,直到給出響應
var yes = SendYesNo();
if (yes)
// Do something
else
// Do something else
現在。 SendYesNo顯示一個包含用戶輸入的框。我想暫停該行上的腳本,直到設置了響應。然後,接受並應用到變量並繼續執行。到目前爲止,我使用了等待/異步,但我不喜歡這個想法。用別的東西可以嗎?
我有腳本根據請求運行並使用CodeDomProvider進行編譯。這裏有一個例子:暫停執行,直到給出響應
var yes = SendYesNo();
if (yes)
// Do something
else
// Do something else
現在。 SendYesNo顯示一個包含用戶輸入的框。我想暫停該行上的腳本,直到設置了響應。然後,接受並應用到變量並繼續執行。到目前爲止,我使用了等待/異步,但我不喜歡這個想法。用別的東西可以嗎?
您可以使用返回參數的模態窗口。如果所需輸入更復雜,您可以使用標準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?
你誤解了我的問題。來自用戶的輸入甚至不是消息框,輸入甚至不重要。我只想知道如何停止執行,直到給出響應。無論它是否是WinForms都沒關係,因爲我不會爲此使用WinForms。 – user3265040
如果輸入不重要,那麼爲什麼要等待呢? – Brad
基本上有兩種情況: 1)您需要等待輸入,並且不希望計算繼續。你的方法是同步的,它不會超過它直到它返回。 2)你不想等待輸入,但你想要處理結果,一旦你得到它。在這種情況下,您可能想在輸入可用時使用線程和回調/事件。 哪一個是你的情況? –
是這個WinForms,WPF,WebBased,控制檯應用程序? –
@ErikPhilips WinForms。 – user3265040
SendYesNo做什麼?你不能只使用ShowDialog? – aquinas