我有一个在单个线程上运行的应用程序,但做了很多事情(在循环中执行方法以自动化webbrowser应用程序)。
我是初学者,因此代码可能组织得很差,但我需要在程序中添加以下功能 - 一个STOP按钮。
它需要做的只是发送'return;'接下来要执行或将要执行的任何方法,以便程序返回到准备和等待阶段(即,我不会丢失用户提供的数据,但不会执行任何循环的其他迭代等。)< / p>
有什么想法吗?
我试过了System.Threading.Thread.CurrentThread.Abort();
,但这实际上杀死了整个应用程序。想要一个好的通用解决方案吗?
干杯!
答案 0 :(得分:1)
首先,如果您只是在应用程序中使用一个线程。然后你不能将cancelTokens发送到你的方法。但是,如果您开始使用任务,这是线程,那么您可以为自己提供在方法上使用cancelTokens的能力。
这是一个非常简单的例子,我在一个有线程的程序中使用了cancelToken。
class Program
{
static void Main(string[] args)
{
bool cancelToken = false;
Thread t = new Thread(new ThreadStart(() =>
{
while (!cancelToken)
{
Console.WriteLine("Running....");
Thread.Sleep(1000);
}
}));
t.Start();
Console.ReadKey();
cancelToken = true;
t.Join();
}
}
答案 1 :(得分:0)
如果您有单线程GUI程序,那么在处理某些内容时您无法接受任何用户命令。如果你像其他人建议的那样做,并将处理转储到工作线程,那么你可以向该线程发送一个中断信号来阻止它。