Skip to main content
 首页 » 编程设计

c#之asp.net web 表单中的多线程 web 服务调用

2024年02月27日37zhoujg

我有一个 aspx 页面来调用 Web 服务,每个调用可能需要几分钟,我想让它以多线程方式工作。基本上我想要的是当用户单击其中一个按钮时 我想对我的网络服务进行服务调用,但我也希望用户能够单击其他按钮并在需要时进行其他服务调用。如果以后打电话 比第一个更快完成,结果必须显示给用户,而无需等待第一个调用的结果。 (你可以考虑桌面sql编辑器应用程序)

但是我无法用我目前的方法来管理它。第一个电话总是阻止后面的电话,我想知道我是否可以做到这一点 Web 应用程序中的一种行为。

我使用如下代码调用服务:

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 
} 

我还将 Async="true"添加到我的 aspx 页面

请您参考如下方法:

Basically what I want is when user clicks one of the buttons I want to make a service call to my web service but I also want user to be able to click the other buttons and make other service calls

你问的可以通过ajax异步调用来完成;将调用服务(通过异步调用)和管理响应的负担留给您的客户。

当用户点击一个按钮时调用该服务;同时第一个调用正在执行客户端可以调用第二个,同时第一个和第二个正在执行客户端可以调用第三个...用户不会卡住等待第一个调用完成

如果您不能直接从 javascript 客户端调用服务,则该服务会调用其余服务并从您的客户端调用其余服务。