在不关闭应用程序的情况下停止执行任何方法
本文关键字:执行 任何 方法 情况下 应用程序 | 更新日期: 2023-09-27 17:54:50
我有一个在单线程上运行的应用程序,但是做了很多事情(在循环中执行方法来自动化web浏览器应用程序)。
我是一个初学者,所以代码可能组织得很差,但是我需要在程序中添加以下功能-一个停止按钮。
它需要做的是简单地发送一个'return;'给任何即将执行或将要执行的方法,以便程序返回到准备和等待阶段(即我不丢失用户提供的数据,但不执行任何循环的其他迭代等)。
任何想法?
我尝试了System.Threading.Thread.CurrentThread.Abort();
,但这实际上杀死了整个应用程序。有什么好的通用解决方案吗?
干杯!
首先,如果你的应用程序只使用一个线程。然后你不能发送canceltoken到你的方法。然而,如果你开始使用任务,它是线程,那么你可以为自己提供在方法上使用canceltoken的能力。
这是我写的一个非常简单的例子,在一个有线程的程序中使用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();
}
}
如果您有一个单线程GUI程序,那么在它处理某些内容时您不能接受任何用户命令。如果你像其他人建议的那样做,并将处理转储到工作线程中,那么你可以向该线程发送中断信号以停止它。