2017-02-27 8 views
1

Webサービスを呼び出すためのaspxページがありますが、それぞれに数分かかることがあり、マルチスレッドで動作させたいと思っています。基本的に私が望むのは、ユーザーがボタンの1つをクリックしたときです。 私は自分のWebサービスにサービスコールをしたいと思っていますが、他のボタンをクリックして他のサービスコールをすることもできます。後の のコールが最初のコールより速く完了した場合、最初のコールの結果を待たずに結果をユーザに表示する必要があります。 (YoはデスクトップSQLエディタアプリケーションについて考えることができます)asp.net WebフォームのマルチスレッドWebサービスコール

しかし私はこれを現在の方法では管理できません。最初の呼び出しは常に以下のものをブロックします。私がこれを達成できるかどうかはWebアプリケーションでの動作の種類 です。

私は私のサービスコールのfloowingのようなコードを使用:ユーザーが1つをクリックしたとき

protected void GetResult_Click(object sender, EventArgs e) 
{ 
    ShowSelectData(sql, connStr, tabId); 
} 

private void ShowSelectData(string sql, string connStr, string tabId) 
{ 
    SqlServiceClient cli = new SqlServiceClient(); 
    cli.ShowSelectDataCompleted += cli_ShowSelectDataCompleted; 
    cli.ShowSelectDataAsync(sql, connStr, tabId); 
} 
void cli_ShowSelectDataCompleted(object sender, SqlService.ShowSelectDataCompletedEventArgs e) 
{ 
    var res = e.Result; 
    //here I show resullts to user 
} 

私も

答えて

4

私のaspxページへ=「true」を非同期を追加し、基本的に私が何をしたいですボタンの私は 私のWebサービスへのサービスコールを行うが、私はまた、ユーザーが 他のボタンをクリックし、他のサービスコールを呼び出すことが欲しい

あなたが聞いたことは、ajax非同期呼び出しによって達成できます。クライアントに(非同期呼び出しによって)サービスを呼び出す負担をかけ、応答を管理してください。

ユーザーがボタンをクリックすると、サービスに電話がかかってきます。最初の呼び出しが実行されている間にクライアントは2番目の呼び出しを実行し、1番目と2番目の呼び出しはクライアントが3番目を呼び出すことができます...ユーザーは終了しないで最初の呼び出しを待っていません

javascriptクライアントのラップサーバー側から直接サービスを呼び出し、残りのサービスを呼び出してクライアントから残りのサービスを呼び出します。

+0

+1「javascriptクライアントラップサーバー側からサービスを直接呼び出すことができない場合、サービスは残りのサービスを呼び出し、クライアントから残りのサービスを呼び出します。」 – NicoE