在不关闭应用程序的情况下停止执行任何方法

本文关键字:执行 任何 方法 情况下 应用程序 | 更新日期: 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程序,那么在它处理某些内容时您不能接受任何用户命令。如果你像其他人建议的那样做,并将处理转储到工作线程中,那么你可以向该线程发送中断信号以停止它。