gpt4 book ai didi

c# - Task中的console.writeline不起作用

转载 作者:行者123 更新时间:2023-12-03 13:19:11 25 4
gpt4 key购买 nike

我正在学习基于任务aysny的编程,无法使此代码正常工作。控制台仅将消息打印一次,然后消失。

如果我删除读取行并运行程序(不是 Debug模式),控制台只会显示一条消息,提示您按一个键继续。当我调试并将调试器放入console.write时,它可以正常工作一段时间,然后控制台窗口消失并再次重新启动。如果我使用for循环<10000而不是while,那么行为也是相同的

你能建议我做错了吗。

static void Main(string[] args)
{
multitasker();

}

static async void multitasker()
{
Task task1 = new Task(PrintMessageA);
task1.Start();
await task1;
}

static void PrintMessageA()
{
while(true)
{
Console.WriteLine("Message from A");
Console.ReadLine();

}
}

最佳答案

您的主线程不会阻塞,因此将立即退出。从某种意义上讲,您将必须“一直等待”,并且还需要等待multitasker,但是实际上您不能这样做,如稍后所示。

因此,首先您以multitasker返回任务

static async Task multitasker()
{
Task task1 = new Task(PrintMessageA);
task1.Start();
await task1;
}

问题是您无法使 Main()(入口点)异步,因此您需要通过在返回的Task上调用 Wait()来阻止该线程。
static void Main(string[] args)
{
multitasker().Wait();
}

关于c# - Task中的console.writeline不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42331050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com