2017-02-27 135 views
1

我有一個aspx頁面來調用Web服務,每個Web服務可能需要幾分鐘時間,我想讓它以多線程的方式工作。基本上我想要的是當用戶點擊其中一個按鈕 我想要對我的Web服務進行服務調用,但我也希望用戶能夠單擊其他按鈕並在需要時進行其他服務調用。如果後來的呼叫 比第一個呼叫完成得更快,則必須向用戶顯示結果,而不必等待第一次呼叫的結果。 (喲可以考慮桌面SQL編輯器應用程序)在asp.net web窗體中的多線程web服務調用

但我不能用我目前的方法來管理這個。第一個電話總是阻止下面的電話,我想知道如果我能在web應用程序中完成這種類型的behviour。

我用像floowing一個代碼爲我服務電話:

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 
} 

我還加異步=「真」到我的aspx頁面

回答

4

當用戶點擊一個基本上就是我想要的我希望 撥打服務電話給我的網絡服務,但我也希望用戶能夠 點擊其他按鈕並撥打其他服務電話

你問的問題可以通過ajax異步調用完成;給您的客戶留下調用服務(通過異步調用)並管理響應的負擔。

當用戶點擊一個按鈕撥打服務的電話;同時第一個呼叫正在執行客戶端可以呼叫第二個,同時第一個和第二個正在執行的客戶端可以呼叫第三個...用戶沒有被凍結等待第一個呼叫完成

如果你不能呼叫直接從一個JavaScript客戶端服務器端服務服務調用到休息服務,並從您的客戶端調用其餘服務。

+0

+1「如果您不能直接從javascript客戶端封裝服務器端調用該服務,則該服務會調用休息服務並從您的客戶端調用其餘服務。」 – NicoE