私はTPLについて学び始め、今質問があります。 私はTaskをコンストラクタ内で起動するWorkerクラスを持っています。これらのタスクを手動リセットイベントと同期させます。しかし、私はこれに関するいくつかの統計を取得したい。だから私はこの仕事の中でオブジェクトを埋もうとしました。いいアイデアですか?タスクの中にオブジェクトを埋め込む
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
statisticsitemのインスタンスは問題ではありません。それはあなたが読み書きしようとしているStatisticsItemのプロパティについてです。同じオブジェクトインスタンスが両側で使用されている間は(gui/task)、オブジェクトをロックするために使用する必要があります。この場合、statisticsitemオブジェクトの使用は合理的な提案ですが、どのオブジェクトでもかまいません。 –