在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客户端服务器端服务服务调用到休息服务,并从您的客户端调用其余服务。
+1“如果您不能直接从javascript客户端封装服务器端调用该服务,则该服务会调用休息服务并从您的客户端调用其余服务。” – NicoE