关于HttpWebRequest的EndGetResponse

时间:2011-09-13 15:03:46

标签: c# .net asynchronous httpwebrequest

我正在使用异步调用来与我的服务器进行通信。我写了一些组件来收集所有未经授权的请求,并在用户登录后重新发送它们。我写了一些测试来产生10个线程,这些线程在没有首先被授权的情况下发送一些请求。比我等待20秒并进行授权,之后我等待请求成功完成。但问题出现在EndGetResponse方法,我在我的回调方法中调用。我是这样做的:

public void InternalCallback(IAsyncResult result)
{
    try
    {
        RequestState state = (RequestState)result.AsyncState;
        IHttpWebRequest request = state.Request;    

        using (IHttpWebResponse response = responseGetter.GetResponse(request, result))
        {
           // ...
        }
     }
     // ...
}

所以,我做了一些自定义类RequestState,它有一些我需要的更高级别的回调,它有我用来调用EndGetResponse方法的请求。但这种方式我得到了错误:

IAsyncResult object was not returned from the corresponding asynchronous method.

我改变了这一点,所以我现在在我的回调类中有Request字段,我在调用BeginGetResponse之前设置了它,并且在我的回调中调用EndGetResponse时使用了Request字段。

public void InternalCallback(IAsyncResult result)
{
    try
    {                                   
        using (IHttpWebResponse response = responseGetter.GetResponse(this.Request, result))
        {
           // ...
        }
     }
     // ...
}

这个新解决方案有效吗?您能否建议这样做的好方法或我该怎么做?

0 个答案:

没有答案