2011-12-07 41 views
1

Async CTPを使用して次のWCFサービス操作を作成する利点は何ですか?WCF非同期操作+ IO操作

Task.Factory.StartNewは、longRunningIoperationの期間、スレッドプールスレッドをブロックしますか?

私はIO完了スレッドのアドバンテージを取るためにこれを書くよりよい方法はありますか?

答えて

1

longRunningIOOperationも非同期操作にする必要があります。コード内の操作がスレッドをブロックしている限り、スレッドプールか、操作が呼び出されたスレッドかに関係なく、スレッドはブロックされます。操作が非同期の場合は、以下のコードに似たものを書くことができます。

+0

お返事ありがとうございました。 –

0

最後に、この仕組みを理解しました。私は.net FX4.5をインストールし、すべてが魅力的に機能しました。

私のシナリオでは、サービスAはこのようなサービスBを呼び出します。

public class ServiceA : IServiceA 
{ 
    public async Task<string> GetGreeting(string name) 
    { 
     ServiceBClient client = new ServiceBClient(); 
     return await client.GetGreetingAsync(); 
    } 
} 

クライアント.GetGreetingAsync()は処理に10秒かかります。サービスのリクエストスレッドはGetGreetingAsync()を呼び出すことでブロックされません。

これはWCFの背後でどのように実装されているかを解説することができますか。

関連する問題