「現在のSynchronizationContextは現在のスレッドのプロパティです」というフレーズを読んだので、少し混乱しています...
VS2010 の C# アプリ コードで入力すると、Thread.CurrentThread.
Intellisense によって提供される選択肢のドロップダウン リストに、スレッドのコンテキスト関連のプロパティが見つかりません。
現在の同期コンテキストは " " を介して取得できることを知っています= SynchronizationContext.Current;
。しかし、これは、並列スレッドやタスクなどで同時に実行される場合には、あまり幸運ではありません。
コンソールまたは WPF (*)アプリから、独自のメイン UI スレッドと TPL タスクでいくつかの Windows フォームを作成して起動するとします。
各 winform には独自のWindowsFormaSynchronizationContextが必要であり、WPF には独自のDispatcherSynchronizationContext ( SynchronizationContext クラスのサブクラス) インスタンスが必要であり、タスクは独自の同期コンテキストを持つThreadPoolで実行され、 LongRunning タスクはそのスレッド プールから実行される可能性があります。独自の同期コンテキスト...
では、なぜSynchronizationContext
スレッドから定義できないのでしょうか? 「特定のスレッドから SynchronizationContext を取得する」という質問に対するすべての回答は、この可能性を否定する点で全会一致のようです...
最後になりましたが、「現在の SynchronizationContext は現在のスレッドのプロパティです」
というフレーズは正しいですか?
次に、さまざまな特定のスレッド インスタンスに対してこのプロパティの値を取得するにはどうすればよいですか?
(*)
最近、本質的に winform を使用する C# WPF アプリ コードが提供されました。