【发布时间】:2023-01-09 02:29:57
【问题描述】:
void Something() => System.Console.WriteLine("Something is done");
Task t = new Task(delegate {Something();});
t.Start(); // nothing activates unless the below code is uncommented
// System.Console.WriteLine(33); //displays "33 \nSomething is done" as long as not commented out
我不了解有关 Task 的一些基本知识。在上面的代码中,如果第 4 行被注释掉,则控制台上不会写入任何内容,但如果您写入 System.Console.WriteLine(33),则会显示数字 33 和 "Something is done"。
- 我不明白为什么
t.Start()不写"Something is done"。 - 为什么在
t.Start()之后写任何东西,激活它?谢谢你。
更新:这是我的整个程序。目的是了解
Task的行为,所以程序很小。
【问题讨论】:
-
这是你的整个程序吗?您启动任务然后程序终止?
-
是的。它旨在了解 Task 的行为,因此程序很小。
-
你不会学到任何有用的东西。你有一个竞争条件:程序想要终止,而任务想要运行。两者都可以赢得比赛,这取决于是否具有确定性的因素。假设您研究了这些因素,并得出了可靠的结论。你打算在什么情况下利用这些知识?您是否计划创建许多组成元素相互斗争和破坏的程序?
-
不同的人以不同的方式学习。我喜欢从一开始就尽可能多地了解基础知识。但那只是我。首先,我在这里学到了很多东西,非常感谢您的投入。你说得很好,但这就是我学习的方式,这对我帮助很大。谢谢你。
标签: c# asynchronous async-await task console-application