Ich fange an, über TPL zu lernen und habe jetzt eine Frage. Ich habe Klasse Worker, die Task im Konstruktor starten. Ich synchronisiere diese Aufgabe mit einem manuellen Reset-Ereignis. Aber ich möchte Statistiken darüber bekommen. Also habe ich versucht, ein Objekt innerhalb dieser Aufgabe zu füllen. Ist das eine gute Idee?Füllobjekt im Inneren Aufgabe
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);
}
zu sperren. StatisticItem ist eine Eigenschaft mit privaten Satz. Also muss es gesperrt oder nicht? – TjDillashaw
Die Instanz des statisticsitem ist nicht das Problem. Es handelt sich um die Eigenschaften des StatisticsItem, das Sie lesen und schreiben möchten. Sie müssen jedes Objekt sperren, solange die gleiche Objektinstanz auf beiden Seiten verwendet wird (gui/task). In diesem Fall ist die Verwendung des statisticsitem -Objekts ein vernünftiger Vorschlag, aber es könnte ein beliebiges Objekt sein. –