目次
-
- WCFサービス
- WCFクライアント
- 構成ファイルとプロキシクラスの作成
- ソースコード
- アプリ実行
- 参考
WCFサービス
サービスはクライアントが同期/非同期のどちらであるかには関知しません。なので、サービスは以下のエントリーで作成したものを流用します。
IISでWCFサービスをホストする(サービスDLL編) - プログラマーな日々
そこで今回は実装をDLLに移行します。 ...
WCFクライアント
クライアントを非同期で実装します。
構成ファイルとプロキシクラスの作成
SVCファイルへのアドレスを入力して「詳細設定」をクリックします
「非同期操作の生成」にチェックを入れて、OKボタンをクリックします。
ソースコード
メソッドが非同期で呼び出されていることを確認します。
using System; using System.Threading; using HelloWorldClient.ServiceReference; namespace HelloWorldClient { class Client { static void Main(string[] args) { StockServiceClient proxy = new StockServiceClient(); { Console.WriteLine("1回目の呼び出し"); IAsyncResult arGetPrice; arGetPrice = proxy.BeginGetPrice("msft", GetPriceCallback, proxy); } { Console.WriteLine("2回目の呼び出し"); IAsyncResult arGetPrice; arGetPrice = proxy.BeginGetPrice("msft", GetPriceCallback, proxy); } // メソッド呼び出しが2回完了するまで、プログラムが終了しないようにする Thread.Sleep(10000); proxy.Close(); Console.WriteLine("完了しました。"); } /// <summary> /// 3秒かかるメソッド /// </summary> /// <param name="ar"></param> static void GetPriceCallback(IAsyncResult ar) { double d = ((StockServiceClient) ar.AsyncState).EndGetPrice(ar); Thread.Sleep(3000); } } }
参考
IAsyncResult インターフェイス (System)
非同期操作のステータスを表します。 ...
IAsyncResult.AsyncState プロパティ (System)
非同期操作についての情報を限定または格納するユーザー定義のオブジェクトを取得します。 ...
AsyncCallback デリゲート (System)
非同期操作の完了時に呼び出されるコールバック メソッドを参照します。 ...