2012-02-27 15 views
2

次のように私のSilverlightアプリケーションが非同期Webサービスメソッドを呼び出している:非同期メソッドは別のスレッドで実行しますか?

gServer = new ServiceReference1.Service1SoapClient(); 

gServer.Retrieve_DataSet_ListCompleted += new EventHandler<ServiceReference1.Retrieve_DataSet_ListCompletedEventArgs>(Retrieve_Data_List_Completed); 

は、別のスレッドでRetrieve_Data_List_Completedメソッドの実行をしていますか?

答えて

1

イベントハンドラは、Gserverをインスタンス化したスレッドで実行されます。非同期ビットは、そのスレッドのデータをgettimngしてgServerに渡します。

0

結果を待っているスレッドは実行されていません。非同期Webサービス呼び出しは完全にスレッドレスです。ソケットの読み書き操作はすべて非同期メソッドを使用して行われます。ソケット自体は、WindowsカーネルプリミティブであるIO完了ポートに要求をキューイングします。

結果が利用可能になるときだけ、あなたのコールバックはいくつかのランダムなスレッドで呼び出されます。しかし、このスレッドは常にそこにいる必要はありませんでした。これはスレッドプールから取得されます。

関連する問題