0

VS 拡張プロジェクトで、EnvDTE.Thread (Freeze および Thaw メソッドにアクセスするため) と System.Threading.Thread (ManagedThreadId プロパティにアクセスするため) の両方としてキャストするプロセス スレッドのマッピングを作成しようとしています。

理想的には次のようにする必要がありますが、System.Threading.Thread から EnvDTE.Thread にキャストできないと言って、キャストはコンパイルされません。

var threads = new Dictionary<EnvDTE.Thread, System.Threading.Thread>();
foreach (System.Threading.Thread thread in this.dte.Debugger.CurrentProgram.Threads) {
    threads.Add((EnvDTE.Thread)thread, thread);
}

例外がスローされないことを知って、キャストを強制するにはどうすればよいですか (ここで何かが欠けている場合を除きます)。

編集: InvalidCastException をスローします。

4

2 に答える 2

1

最初にオブジェクトにキャストバックしようとしましたか?

threads.Add((EnvDTE.Thread)(object)thread, thread);
于 2011-07-07T23:21:54.517 に答える
0

あなたが得ているコンパイルエラーは、ちょっとしたニシンです。

Debugger.CurrentProgram.ThreadsEnvDTE.Threadすでにオブジェクトのコレクションを返しているため、名前を超えてこれらのクラス間に関係がないため、foreachそれらをキャストしようとすると失敗します。System.Threading.Thread

EnvDTE.Threadプロパティを持っていIDます。に変換する必要なく、それはあなたが望むことをしSystem.Threading.Threadますか?

于 2011-07-07T23:26:57.687 に答える