我正在c#控制台应用程序中构建软件
我创建线程并将其分配给函数的代码:
Task.Factory.StartNew(() => util.Menu());
我想做的是有一个显示线程当前状态的菜单,例如:
--THREAD 1--
Status: BUSY
--THREAD 2--
Status: IDLE
等等。。。
我该怎么做?
现在建议使用Task.Run()
而不是Task.Factory.StartNew()
(TaskFactory.StartNew方法(,但由于两者都返回Task
,因此对我的答案没有影响。
无论你选择哪一个,都会返回一个任务,你可以将这些任务添加到列表中,然后你可以获得其中任何一个的状态:
List<Task> tasks = new List<Task>();
tasks.Add(Task.Run(() => util.Menu));
然后你可以得到它们的状态:
var status = tasks.Select((t, i) => new { Id = i + 1, t.Status});
和:
foreach(var item in status)
Console.WriteLine($"--Task {item.Id}--rnStatus: {item.Status}");