如何在控制台中按Enter键取消正在运行的任务?

时间:2017-11-11 21:38:54

标签: c# multithreading

假设某个应用程序有一个方法名称PrintAsterisk(),它会在屏幕上连续打印星号。 该方法在与用户界面分开的Task上运行。 当用户按下Enter键时,我需要确保应用程序停止在屏幕上打印星号。

如何在控制台中按Enter键取消正在运行的任务?

以下是我简化的方法:

static void PrintAsterisk() {
    while (true) {
        Thread.Sleep(1000);
        Console.Write("*");
    }
}

1 个答案:

答案 0 :(得分:2)

取决于您如何创建线程,您可以将CancellationToken传递给它。在线程中运行的内部方法只是检查该令牌是否有取消请求,如果是,请中断您的方法。

https://msdn.microsoft.com/en-us/library/system.threading.cancellationtoken(v=vs.110).aspx