Ich bin ein wenig neu in C# Threading, aber ich habe eine Codebasis geerbt, die ziemlich viel davon tut. Ich schaue mir einige Multithread-Code-Segmente an, die logisch hintereinander laufen. Hier ein Beispiel:Parallel ForEach mit dem aktuellen Synchronisationskontext
// Draw the nodes.
var factory = new TaskFactory(TaskScheduler.FromCurrentSynchronizationContext());
var drawingTasks = new List<Task>(nodePoints.Count);
Parallel.ForEach(nodePoints, nodePoint =>
{
Task task = factory.StartNew(() => DrawNode(token, nodePoint, groupList), token, TaskCreationOptions.None, factory.Scheduler);
if (task != null)
drawingTasks.Add(task);
});
await factory.ContinueWhenAll(drawingTasks.ToArray(), result =>
{
_event.Publish(new MapNodesDrawnEvent());
});
Debuggen der Anwendung zeigt dies auf der Haupt-Thread ausgeführt wird, welche ich annehme ist auch der UI-Thread. Da die neuen Threads den aktuellen Synchronisationskontext verwenden, werden nicht alle diese Tasks nacheinander auf dem Hauptthread ausgeführt. Wenn ja, ist es sinnvoll, dies zu tun?