Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HttpWebRequest混合使用同步和异步方法_C#_.net_Asynchronous_Httpwebrequest - Fatal编程技术网

C# HttpWebRequest混合使用同步和异步方法

C# HttpWebRequest混合使用同步和异步方法,c#,.net,asynchronous,httpwebrequest,C#,.net,Asynchronous,Httpwebrequest,我读到: 您的应用程序不能将同步和异步方法混合使用 特别要求。如果调用BeginGetRequestStream方法,则 必须使用BeginGetResponse方法检索响应 反之亦然吗?如果我调用BeginGetResponse异步读取响应,我是否也应该使用BeginGetRequestStream写入请求 我的请求很小(100-1000个字符),响应可能很大。 Jeffrey Richter似乎说,在小负载的情况下,它可以同步完成(并且不设置ContentLength属性)。正确吗?技术上不

我读到:

您的应用程序不能将同步和异步方法混合使用 特别要求。如果调用BeginGetRequestStream方法,则 必须使用BeginGetResponse方法检索响应

反之亦然吗?如果我调用
BeginGetResponse
异步读取响应,我是否也应该使用
BeginGetRequestStream
写入请求

我的请求很小(100-1000个字符),响应可能很大。 Jeffrey Richter似乎说,在小负载的情况下,它可以同步完成(并且不设置
ContentLength
属性)。正确吗?

技术上不,您可以同步发送请求并异步处理响应,反之亦然,具体取决于您的需求,但通常不建议这样做。为了保持一致性,选择一种最能满足您需求的方法,并使用相同的方法实现请求/响应


例如,当您发送一个可能需要一些时间才能完成的报告请求时,您可能会混合各种方法。您希望同步发送请求,因为您希望在继续之前确保请求已完全发送(例如,如果从windows应用程序发送,则考虑连接问题),但异步处理响应,因为您不希望在等待响应返回时占用UI。尽管如此,我仍然建议您在发送/接收方面保持一致。

谢谢DiskJunky,我同意您的观点,但为什么msdn如此明确?我认为主要是从维护的角度出发。对于跟踪和查看代码的人来说,理解一种方法比理解两种方法更容易。简单易读始终是优雅解决方案的一部分。至于MSDN,他们必须推荐一种“最佳实践”方法来帮助培养良好的编码和设计