c# - 如何将变量分配给线程以进行状态更新
问题描述
我正在 ac# 控制台应用程序中构建软件
我用于创建线程并将其分配给函数的代码:
Task.Factory.StartNew(() => util.Menu());
我想要做的是有一个显示线程当前状态的菜单,例如:
--THREAD 1--
Status: BUSY
--THREAD 2--
Status: IDLE
ETC...
我该怎么做呢?
解决方案
现在建议使用Task.Run()
而不是Task.Factory.StartNew()
(TaskFactory.StartNew Method),但是由于两者都返回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}--\r\nStatus: {item.Status}");
推荐阅读
- python - ValueError:连接轴的所有输入数组维度必须完全匹配,但沿维度 1,
- javascript - 如何自动检索电子邮件文本并进一步抓取它们?
- linux - 如何启用对辅助驱动器的增量热备份?
- python - 通过给定的单个值列表定位数据框中的所有行
- google-sheets - 谷歌表格中的 Sumifs #ref 错误 - 无法解释
- php - HTML + PHP 验证中的日期输入
- jenkins - 使用 jenkins 共享库将工件上传到 S3
- pandas - 如何连续更新数据框列中的每个 NaN 值
- node.js - Mongoose 聚合:MongoError:未知运算符:$ 或
- python-3.x - 如何将两个数组的元组与元组字典映射并处理映射中的划分?