2
私はC#でスレッディングを少し新しくしましたが、かなりのことをしているコードベースを継承しました。私は、論理的に連続して実行されているように見えるいくつかのマルチスレッドコードセグメントを見ています。アプリケーションをデバッグすることは、これは私もUIスレッドであると仮定し、メインスレッド上で実行されて明らかになった現在の同期コンテキストを使用する並列ForEach
// 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());
});
:ここでは例です。新しいスレッドは現在の同期コンテキストを使用しているので、メインスレッドでこれらのタスクをすべて順番に実行するのではないのですか?もしそうなら、これには何か価値がありますか?