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

时间:2014-03-28 19:30:58

标签: c# .net

我有一个在单个线程上运行的应用程序,但做了很多事情(在循环中执行方法以自动化webbrowser应用程序)。

我是初学者,因此代码可能组织得很差,但我需要在程序中添加以下功能 - 一个STOP按钮。

它需要做的只是发送'return;'接下来要执行或将要执行的任何方法,以便程序返回到准备和等待阶段(即,我不会丢失用户提供的数据,但不会执行任何循环的其他迭代等。)< / p>

有什么想法吗?

我试过了System.Threading.Thread.CurrentThread.Abort();,但这实际上杀死了整个应用程序。想要一个好的通用解决方案吗?

干杯!

2 个答案:

答案 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程序,那么在处理某些内容时您无法接受任何用户命令。如果你像其他人建议的那样做,并将处理转储到工作线程,那么你可以向该线程发送一个中断信号来阻止它。