Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在控制台中按Enter键取消正在运行的任务?_C#_Multithreading - Fatal编程技术网

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

C# 如何在控制台中按Enter键取消正在运行的任务?,c#,multithreading,C#,Multithreading,假设一个应用程序有一个方法名printstarisk(),它在屏幕上连续打印星号。 该方法在独立于用户界面的任务上运行。 我需要确保当用户按下Enter键时,应用程序停止在屏幕上打印星号 如何在控制台中按Enter键取消正在运行的任务 以下是我简化的方法: static void PrintAsterisk() { while (true) { Thread.Sleep(1000); Console.Write("*"); } } 根据创建线程的

假设一个应用程序有一个方法名printstarisk(),它在屏幕上连续打印星号。 该方法在独立于用户界面的任务上运行。 我需要确保当用户按下Enter键时,应用程序停止在屏幕上打印星号

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

以下是我简化的方法:

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

根据创建线程的方式,可以将
CancellationToken
传递给它。线程中运行的Inside方法只需检查该令牌是否有取消请求,如果有,请中断您的方法


将CancellationToken传递给任务,并注意内部的取消。Toureg,请注意您使用了术语“task”(在C#/.Net文章中,它通常指
System.Threading.Tasks
)中的类型),但基于文章中的代码是关于低级线程类型的-请确保澄清。。。另外,“在一个与用户界面分离的任务上运行”是非常令人困惑的-甚至不知道你的意思是什么。Thx用于快速响应。