我有一个aspx页面来调用Web服务,每个页面都需要几分钟,我想让它以多线程方式工作。基本上我想要的是当用户点击其中一个按钮时 我想对我的网络服务进行服务调用,但我也希望用户能够点击其他按钮并根据需要拨打其他服务电话。如果后来打电话 比第一个完成得更快,必须向用户显示结果而不等待第一次调用的结果。 (哟可以考虑桌面sql编辑器应用程序)
但是我无法使用当前的方法来管理这个问题。第一次调用总是阻止以下的,我想知道如果我能做到这一点 网络应用程序中的一种行为。
我使用像我的服务电话的代码一样的代码:
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页面
答案 0 :(得分:3)
基本上我想要的是当用户点击我想要的其中一个按钮时 对我的网络服务进行服务调用,但我也希望用户能够 单击其他按钮并进行其他服务呼叫
您提出的问题可以通过ajax异步调用完成;给客户留下调用服务的负担(通过异步调用)并管理响应。
当用户点击按钮拨打该服务时;同时第一个调用是执行客户端可以调用第二个,同时第一个和第二个正在执行客户端可以调用第三个...用户没有冻结等待第一次调用完成
如果您无法直接从javascript客户端包装服务器端调用该服务,则该服务会调用其他服务并从您的客户端调用其余服务。