C# 在消息框处于活动状态时执行
C# Do While Message Box is active
我正在用 C# 开发一个需要用户从弹出消息框中输入的项目。
我还试图让我的代码在消息框处于活动状态时执行一系列任务。
我的目标是让 MessageBox 描述正在执行的任务,并要求用户观察并验证它们是否正在执行。
我希望这些任务持续执行,直到用户单击 MessageBox 中的响应。
要创建我的消息框,我正在使用:
MessageBox.Show(string <message>, string <caption>, MessageBoxButton.YesNo)
我要做的事情的基本结构如下:
var userInput = MessageBox.Show("Are tasks A, B, C running?", "winCaption", MessageBoxButton.YesNo);
while (// <No response to MessageBox>)
{
// Task A
// Task B
// Task C
if (userInput == MessageBoxResult.Yes)
{
// PASS
// exit while loop
}
else
{
// FAIL
// exit while loop
}
}
我发现当 MessageBox.Show() 发生并且弹出窗口 window 出现时,代码似乎挂在该行,直到检测到用户响应。
有可能使这项工作吗?如果没有,还有其他选择吗?
谢谢
MessageBox.Show
创建一个模态对话框,这意味着线程上的执行会停止,直到它关闭。您需要创建一个新的 Form
来显示而不是使用内置的 MessageBox
。
创建表单后,可以这样调用它:
MyForm form = new MyForm();
form.Show(); //Note that this will NOT be modal
请记住 Form
有一种方法可以模态显示它,称为 ShowDialog()
。可能有点混乱,所以我在这里总结一下:
MessageBox.Show(); //Modal
Form.Show(); //Not Modal
Form.ShowDialog(); //Modal
如何在单独的 Thread
上调用 MessageBox?
var action = new Action(() =>
{
var userInput = MessageBox.Show("Are tasks A, B, C running?", "winCaption", MessageBoxButtons.YesNo);
if (userInput == DialogResult.Yes)
{
// PASS
}
else
{
// FAIL
}
});
new Thread(new ThreadStart(action)).Start();
我正在用 C# 开发一个需要用户从弹出消息框中输入的项目。
我还试图让我的代码在消息框处于活动状态时执行一系列任务。
我的目标是让 MessageBox 描述正在执行的任务,并要求用户观察并验证它们是否正在执行。 我希望这些任务持续执行,直到用户单击 MessageBox 中的响应。
要创建我的消息框,我正在使用:
MessageBox.Show(string <message>, string <caption>, MessageBoxButton.YesNo)
我要做的事情的基本结构如下:
var userInput = MessageBox.Show("Are tasks A, B, C running?", "winCaption", MessageBoxButton.YesNo);
while (// <No response to MessageBox>)
{
// Task A
// Task B
// Task C
if (userInput == MessageBoxResult.Yes)
{
// PASS
// exit while loop
}
else
{
// FAIL
// exit while loop
}
}
我发现当 MessageBox.Show() 发生并且弹出窗口 window 出现时,代码似乎挂在该行,直到检测到用户响应。
有可能使这项工作吗?如果没有,还有其他选择吗?
谢谢
MessageBox.Show
创建一个模态对话框,这意味着线程上的执行会停止,直到它关闭。您需要创建一个新的 Form
来显示而不是使用内置的 MessageBox
。
创建表单后,可以这样调用它:
MyForm form = new MyForm();
form.Show(); //Note that this will NOT be modal
请记住 Form
有一种方法可以模态显示它,称为 ShowDialog()
。可能有点混乱,所以我在这里总结一下:
MessageBox.Show(); //Modal
Form.Show(); //Not Modal
Form.ShowDialog(); //Modal
如何在单独的 Thread
上调用 MessageBox?
var action = new Action(() =>
{
var userInput = MessageBox.Show("Are tasks A, B, C running?", "winCaption", MessageBoxButtons.YesNo);
if (userInput == DialogResult.Yes)
{
// PASS
}
else
{
// FAIL
}
});
new Thread(new ThreadStart(action)).Start();