Csharp/C#教程:使用Task.StartNew时指定线程的名称分享


使用Task.StartNew时指定线程的名称

有没有办法在使用Task.StartNew方法时指定Thread的名称

 var task = Task.Factory.StartNew(MyAction, TaskCreationOption.LongRunning, ??ThreadName??); 

肯定不是线程名称。

线程和任务不是一对一相关的。

您可以使用Task.Id来跟踪它。

嗯,这工作:

 class Program { static void Main(string[] args) { var task = Task.Factory.StartNew(() => { Thread.CurrentThread.Name = "foo"; Thread.Sleep(10000); // Use Debug + Break to see it }); task.Wait(); } } 

然而,有一个问题,线程池线程被回收并且不会改变它的免费精选名字大全。 这可能令人困惑,你会看到它在以后执行完全不同的代码。 一定要注意这一点。 否则,最好使用Debug + Windows + Threads窗口中的Location列来找回任务。

我更喜欢使用Thread.CurrentThread.ManagedThreadId。 它不如名称好,但确实有助于跟踪线程的具体工作。

您可以编写自己的TaskScheduler,它在将任务放在线程上时设置Thread.CurrentThread.Name。 任务完成后,您的自定义TaskScheduler也可以清除Thread.CurrentThread.Name以避免任何混淆。

上述就是C#学习教程:使用Task.StartNew时指定线程的名称分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1006845.html

(0)
上一篇 2021年12月29日 下午2:14
下一篇 2021年12月29日

精彩推荐