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

Jon*_*Jon 28 .net c# .net-4.0 task-parallel-library

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

var task = Task.Factory.StartNew(MyAction, TaskCreationOption.LongRunning, ??ThreadName??);
Run Code Online (Sandbox Code Playgroud)

Han*_*ant 33

嗯,这工作:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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


Hen*_*man 18

肯定不是线程名称.

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

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

  • 我有一个长时间运行的任务,这意味着创建了一个新线程,我想命名它 (2认同)