使用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