C# 在给出响应之前暂停执行

C# 在给出响应之前暂停执行,c#,C#,我有一些脚本可以根据请求运行,并使用CodeDomProvider编译。下面是一个例子: var yes = SendYesNo(); if (yes) // Do something else // Do something else 现在。SendYesNo显示一个包含用户输入的框。我想暂停该行上的脚本,直到设置响应为止。然后,获取响应并将其应用于变量,然后继续执行。到目前为止,我使用了wait/async,但我不喜欢这个想法。是否可以使用其他工具?可以使用模式窗口返回参

我有一些脚本可以根据请求运行,并使用CodeDomProvider编译。下面是一个例子:

var yes = SendYesNo();

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

现在。SendYesNo显示一个包含用户输入的框。我想暂停该行上的脚本,直到设置响应为止。然后,获取响应并将其应用于变量,然后继续执行。到目前为止,我使用了wait/async,但我不喜欢这个想法。是否可以使用其他工具?

可以使用模式窗口返回参数。如果需要的输入更复杂,您可以使用标准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
    }
}
如果只是一个“是/否”消息框,您可以参考:

这是WinForms、WPF、基于网络的控制台应用程序吗?@ErikPhilips WinForms。SendYesNo做什么?你不能直接使用ShowDialog吗?这不能正常工作吗?当您调用
SendYesNo()
时,程序将无法继续,直到
SendYesNo()
完成…@Brad这不是我的问题。我想知道如何使SendYesNo返回布尔值,但仅当我设置该布尔值时。比如,make SendYesNo返回一个我想在任何时候设置的布尔值。只有当它设置好后,它才会返回。你误解了我的问题。用户的输入甚至不是一个消息框,输入根本不重要。我只是想知道如何停止执行,直到得到答复。不管是不是WinForms,这都无关紧要,因为无论如何,我都不使用WinForms。如果输入不重要,那么为什么要等待它呢?基本上有两种情况:1)需要等待输入,并且不希望计算继续。您的方法是同步的,在返回之前不会经过它。2) 您不想等待输入,但希望在获得结果后处理它。在这种情况下,您可能希望在输入可用后使用线程和回调/事件。哪一个是你的案例?@ErikPhilips-WinForms.-user3265040 19分钟前“无论如何,我没有使用WinForms.-user3265040 2分钟前”嗯,好的。我放弃了。你在问什么???在这种情况下,由于你的代码是同步的,你的代码已经按预期工作了。在SendYesNo()方法返回之前,您不会到达IF语句。