我开始了解TPL,现在有疑问。 我有类Worker在构造函数中启动Task。我将这些任务与手动重置事件同步。但我想得到一些关于此的统计数据。所以我试着在这个Task中填充对象。这是个好主意吗?
public Worker(...)
{
...
StatisticItem = new StatisticItem();
....
Task = Task.Factory.StartNew(() =>
{
//Manual reset event
WaitForSignalToStart.WaitOne();
while (source.IsMyTurn(RepeatOrder))
{
Item item;
var realTimeWatch = new Stopwatch();
while (TryGetNext(out item))
{
...
DoWork()
StatisticItem.PlanItemId =...
StatisticItem.CommandAndQueryName =...
StatisticItem.WokrerId = ...
StatisticItem.ThreadId = ...
StatisticItem.Date = ...
}
}, tokenSource.Token, TaskCreationOptions.LongRunning, TaskScheduler.Current);
}
答案 0 :(得分:1)
只要您只有一个任务访问此特定StatisticItem
,您就可以了。这是有效的,因为lamba语句能够使用它们在其中创建的上下文中的变量。
答案 1 :(得分:1)
是的,您可以这样做,但如果StatisticItem
是一个字段,则只能激活一个任务。另外,建议锁定StatisticItem