WCFサービスがクライアントから非同期で呼び出されると、クライアントアプリがブロックされていないことがわかります。
しかし、非同期メソッド呼び出しの実行中にWCF側のスレッドがブロックされているのでしょうか、それともWCFがメソッド呼び出しの開始に使用したスレッドを解放しているのでしょうか。
たとえば、以下のコードのように、ASP.Netアプリから非同期で'Add'メソッドを呼び出すと、バックエンドのサービスインスタンスはメソッドが完了するまで待機しますか?WCFはPerCallのInstanceContextを使用します。
CalculatorClient client = new CalculatorClient();
// AddAsync
double value1 = 100.00D;
double value2 = 15.99D;
client.AddCompleted += new EventHandler<AddCompletedEventArgs>(AddCallback);
client.AddAsync(value1, value2);