我有一个 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 客户端调用服务,则该服务会调用其余服务并从您的客户端调用其余服务。
