2009-08-03 25 views
1

asp.net 2.0 WebクライアントからWCF Webサービスへの非同期Webサービス呼び出しを作成しようとしています。非同期オプション付きのsvcutil.exeを使用してプロキシクラスを作成しました。次に、Webサービスを呼び出すクライアントコードの例を示します。asp.net 2.0 WebクライアントからWCF Webサービス(非同期問題)への非同期Webサービス呼び出し

protected void Page_Load(object sender, EventArgs e) 
{ 
    WSClient client = new WSClient(); 
    AsyncCallback asyncCallback = new AsyncCallback(WebServiceCallback); 
    AsyncCallState asyncCallState = new AsyncCallState(client); 
    client.BeginWS(value, asyncCallback, asyncCallState); 
    Response.Write("Big Test"); 
} 

public void WebServiceCallback(IAsyncResult ar) 
{ 
    AsyncCallState asyncCallState = (AsyncCallState)ar.AsyncState; 
    WSsClient client = (WSClient)asyncCallState.WebServiceState; 

    WSClientResult result = client.EndWS(ar); 
} 

参照用コードを使用します。 Page_Loadのすべてが実行されますが、コールバックでclient.EndWSが実行されるまで、ページには「Big Test」が表示されません。これは非同期ではないようです。非同期呼び出しを非同期にする方法のアイデアや提案は高く評価されます。

+0

「非同期ではない」とはどういう意味ですか?あなたはどんな結果を見ますか? – Cheeso

+0

Webサービスがまだ実行されている間、彼は "Big Test"がブラウザに表示されることを期待したようです。したがって、彼はASP.NETを理解していないという私のコメント。 –

答えて

0

ページにasyncディレクティブを追加する必要があります。これを済ませたら、completedとasyncを使うことができます。

例えば

次はあなたがあなたの生成されたプロキシで見つける必要がありますsomemethodcompleted({いくつかのEventHandler})にイベントを配線してください。

次に、somemethodasyncを呼び出します。タスクを開始します。

このメソッドを使用すると、メソッドが返される前にページライフサイクルの完了を妨げるasp.netのページタスクに自動的に参加します。

役に立ったとお礼します

関連する問題