线程自旋使用Task.Run始终退出,退出代码为259按钮,所以代码隐藏:publicpartialclassMainWindow:Window{publicMainWindow(){InitializeComponent();}asyncvoidButton_Click(objectsender,RoutedEventArgse){awaitTask.Run(()=>this.DoOnThread());}asyncTaskDoOnThread(){Thread.CurrentThread.Name="MyTestThread";线程.睡眠(1000);返回真;如果我通过VisualStudio线程窗口中断“返回真”,我可以获得ThreadID,如果我继续并让代码运行完成并等待一段时间直到线程退出,我会得到“线程0x9ad34已退出,代码为259(0x103))”显示在VS输出窗口中。我做错了什么以及如何确保线程退出代码为0?Task.Run不创建线程。它安排委托在ThreadPool线程上运行。根据CPU负载在线程池中创建或销毁线程。您看到的退出代码与您的代码没有任何关系:它可能只是一条VisualStudio调试消息,或者一个退出的ThreadPool线程。此外,异步并不意味着该方法将异步运行。它是一种语法糖,允许编译器创建代码以异步等待任何标记为awaitasync的方法。在您的情况下,DoOnThread没有异步调用或等待,因此它将同步运行。事实上,编译器甚至会发出警告,DoOnThread不包含await,因此它会与不属于您的线程池线程同步运行。你不应该设置他们的名字,也不应该关心他们的退出代码。以上为C#学习教程:使用Task.Run轮转的线程总是退出,退出码为259。不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
