【发布时间】:2020-04-08 14:18:48
【问题描述】:
是否可以通过在 Windows 窗体应用程序中单击按钮来停止正在进行的进程?
- 例如,假设有 2 个按钮,“开始”和“停止”
- 当您按下“开始”时,它将开始一个无限循环,打印从 1 到无穷大的数字。
- 当我按“STOP”时,该过程应该在那个时刻停止。
- 但问题是,我不能按“停止”按钮,因为它不允许我,因为有一个正在进行的过程。
有没有办法克服这个问题?
我知道有一个叫做“MethodInvoker”的东西,但我不知道它是如何工作的,也不知道它是否与此相关。
private bool keepRunning = true;
public Form1()
{
InitializeComponent();
}
private void StartBtn_Click(object sender, EventArgs e)
{
var number = 1;
while (keepRunning)
{
Thread.Sleep(1000);
MesgeLabel.Text = "" + number++;
}
}
private void StopBtn_Click(object sender, EventArgs e)
{
//Cannot even click this button
keepRunning = false;
//or
Application.Exit();
}
【问题讨论】:
-
显示代码总是有帮助的,否则我们只会猜测您的程序发生了什么。
-
我的代码有点长,但我会创建一个较短的版本并上传
-
嗨。你还在吗?任何解决方案对您有帮助吗?
-
Oguz Ozgul - 你的解决方案对我有用。不过有一个小问题。当我尝试将文本放在标签上时,它给了我一个例外。但这只是一个测试应用程序,所以感谢你我找到了解决方案