Im начнет узнавать о TPL и теперь у вас есть вопрос. У меня есть рабочий класс, который запускает 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);
}
StatisticItem - это собственность с частным набором. Так что это нужно для блокировки или нет? – TjDillashaw
Экземпляр статистики не является проблемой. Это о свойствах Статистического объекта, который вы собираетесь читать и писать. Вы должны использовать для блокировки любого объекта, поскольку один и тот же экземпляр объекта используется с обеих сторон (gui/task). В этом случае использование объекта statisticsitem является разумным предложением, но это может быть любой объект. –