在asp.net web窗体中的多线程web服务调用

问题描述:

我有一个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页面

当用户点击一个基本上就是我想要的我希望 拨打服务电话给我的网络服务,但我也希望用户能够 点击其他按钮并拨打其他服务电话

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

当用户点击一个按钮拨打服务的电话;同时第一个呼叫正在执行客户端可以呼叫第二个,同时第一个和第二个正在执行的客户端可以呼叫第三个...用户没有被冻结等待第一个呼叫完成

如果你不能呼叫直接从一个JavaScript客户端服务器端服务服务调用到休息服务,并从您的客户端调用其余服务。

+0

+1“如果您不能直接从javascript客户端封装服务器端调用该服务,则该服务会调用休息服务并从您的客户端调用其余服务。” – NicoE