2

そのため、COM オブジェクトを介してエクスポートされるクラスをインスタンス化する C# コードがいくつかあります。その特定のインスタンス化呼び出しはブロッキング呼び出しです (外部ソースからのデータのダウンロードが必要です)。したがって、私のC#ブロッキングを作成します。

オブジェクトを非同期的にインスタンス化することは可能ですか?

4

2 に答える 2

2

場合によります。

一般に、 を起動しTaskて、バックグラウンド スレッドでオブジェクトをインスタンス化できます。C# 5 では、これは次のように単純になります。

var yourObject = await Task.Run(() => new TheObject());

ただし、これは COM オブジェクトであるため、オブジェクト自体がスレッド アフィニティを持つ可能性が非常に高くなります。COM オブジェクトがシングル スレッド アパートメント スレッドを必要とする場合は、それに対して STA スレッドを保証する必要があります。スレッド アフィニティがある場合は、UI スレッドで実行する必要がある場合があります。

于 2013-09-04T20:54:27.287 に答える