1

次のコードを検討してください。

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

ReSharper は、(条件が常に false であることを示すことによって)resultあり得ないことを示唆しています。nullただし、IAsyncResultは参照型でnullあるため、可能な値です。私は2つの可能性を思いつきました:

  • ReSharperresultが決してnull. ReSharper を使用してIHttpAsyncHandlerソース コードを見ると、 に関連付けられている属性が表示されませんEndProcessRequest
  • ReSharper は、IHttpAsyncHandler保証IAsyncResultが決してならないことを認識していますnull。ただし、ドキュメントはどちらの方法でも手がかりを提供しません。

IAsyncResult非同期タスクの進行状況を追跡できるため、null にならないのは妥当と思われます。誰かが洞察を提供してもらえますか?

4

1 に答える 1

0

IHttpAsyncHandlerは、古いスタイルの非同期プログラミング モデルの例です。

おそらく、ReSharper はパターンを認識するように設計されています。

ノート:

End OperationNameメソッドを同じメソッドで複数回呼び出した場合の効果はIAsyncResult定義されていません。同様に、関連するBeginメソッドによって返されなかった を使用してEnd OperationNameメソッドを呼び出すことも定義されていません。IAsyncResult

したがって、このパターンに従って、コードを適切に呼び出していない人に対処するコードを記述する必要はありません。

于 2015-11-10T09:29:03.017 に答える