IHttpAsyncHandler.EndProcessRequest中的IAsyncResult是否可以为空?

时间:2015-11-10 09:17:10

标签: c# asp.net-mvc asynchronous resharper ihttpasynchandler

请考虑以下代码:

public class AsyncRequestHandler : IHttpAsyncHandler
{
   public void EndProcessRequest(IAsyncResult result)
   {
     if (result == null)
     {
       ...
     }
     ...
   }
}

ReSharper建议result永远不会是null(通过指示条件始终为假)。但是,由于IAsyncResult是引用类型,null是可能的值。我提出了两种可能性:

  • 某些可用的元数据允许ReSharper断定result永远不会是null。使用ReSharper查看IHttpAsyncHandler源代码,我看不到与EndProcessRequest相关联的任何属性。
  • ReSharper意识到IHttpAsyncHandler保证IAsyncResult永远不会null。但是,documentation无法提供任何线索。

IAsyncResult不会为null似乎是合理的,因为它允许我们跟踪异步任务的进度。有人可以提供一些见解吗?

1 个答案:

答案 0 :(得分:0)

IHttpAsyncHandler是旧式Asynchronous Programming Model的示例。

也许ReSharper旨在识别模式。

注意:

  

未定义使用相同IAsyncResult多次调用结束 OperationName 方法的效果。同样,也未定义使用相关开始方法未返回的IAsyncResult调用结束 OperationName 方法。< / p>

因此,您不必编写代码来处理不正确调用您的代码的人,遵循此模式。