1

/async フラグを指定して SVCUTIL を使用して生成した wcf クライアントがあります。

サーバーはシンクロニックですが、クライアントでは Begin/End メソッドのみを使用しています。

また、属性 UseSynchronizationContext=false を CallbackBehavior に追加しました。

私の質問は次のとおりです。WCF はこのモードでスレッドをどのように処理しますか? またはより良い表現 - 同時関数を呼び出すときに、WCF は ThreadPool クラスを使用してコールバック用の新しいスレッドを取得していますか? それとも、いくつかのカスタム実装がありますか?

この件について何時間もグーグルで検索しましたが、答えに近いものは何も見つかりませんでした。

編集:ここで少し不明確だったようです-サーバーアプリについて尋ねているのではなく、クライアントアプリについて尋ねています-usesynchronizationcontextフラグを設定したときにコールバックを返すスレッドをどのように管理しますか?偽に?

4

1 に答える 1

1

サービスのスレッドは、クライアントがどのように呼び出しても影響を受けません。プロキシの Begin/End メソッドを使用すると、アプリケーション コードがブロックされないように、プロキシは別のクライアント スレッドを使用してサービスを呼び出します。

.NET 4.5 では、タスク ベースの非同期呼び出しが優先されるようになりました。

さまざまなパターンの概要については、同期操作と非同期操作を参照してください。

于 2013-04-04T15:53:01.063 に答える