我正在 Web 服务中使用第三方资源(.dll),而我的问题是,调用该资源(调用方法)是异步完成的 - 我需要订阅一个事件,以获得我的请求的答案。如何在 C# Web 服务中执行此操作?
更新:
关于Sunny's answer :
我不想让我的 Web 服务异步。
最佳答案
假设您的第 3 方组件正在使用整个 .NET Framework 中使用的异步编程模型模式,您可以执行类似的操作
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://www.stackoverflow.com");
IAsyncResult asyncResult = httpWebRequest.BeginGetResponse(null, null);
asyncResult.AsyncWaitHandle.WaitOne();
using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.EndGetResponse(asyncResult))
using (StreamReader responseStreamReader = new StreamReader(httpWebResponse.GetResponseStream()))
{
string responseText = responseStreamReader.ReadToEnd();
}
由于您需要阻止 Web 服务操作,因此应使用 IAsyncResult.AsyncWaitHandle 而不是回调来阻止,直到操作完成。
关于c# - 在 C# Web 服务中调用异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/246791/