我需要在ASP.NET应用程序中异步调用Web服务。aspx页面不需要来自Web服务的答案。这只是一个简单的通知。
我正在使用Web服务存根中的...Async()
方法和<%@Page Async="True" %>
。
ws.HelloWorldAsync();
我的问题是:网页请求正在等待Web服务响应。
如何解决这个问题?如何避免在Web服务宕机或过载时出现任何资源泄漏?
我需要在ASP.NET应用程序中异步调用Web服务。aspx页面不需要来自Web服务的答案。这只是一个简单的通知。
我正在使用Web服务存根中的...Async()
方法和<%@Page Async="True" %>
。
ws.HelloWorldAsync();
void MakeWebServiceAsynCall()
{
WebServiceProxy proxy = new WebServiceProxy();
proxy.BeginHelloWorld(OnCompleted, proxy);
}
void OnCompleted(IAsyncResult result)
{
try
{
using (WebServiceProxy proxy = (WebServiceProxy)result.AsyncState)
proxy.EndHelloWorld(result);
}
catch (Exception ex)
{
// handle as required
}
}
我以前用过简单的线程来做这个。例如:
Thread t = new Thread(delegate()
{
ws.HelloWorld();
});
t.Start();
该方法返回后,线程将继续运行。看起来线程池的方法并不总是被推荐使用。
如果您不关心获得结果通知,那么启动一个新的线程可能是最简单的解决方案。
new Thread(() => ws.HelloWorld()).Start