Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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# 是否需要关闭web请求流?_C#_Stream_Httpwebrequest - Fatal编程技术网

C# 是否需要关闭web请求流?

C# 是否需要关闭web请求流?,c#,stream,httpwebrequest,C#,Stream,Httpwebrequest,哪条路比较好 A: B: 备选案文C: HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); using (Stream reqStream = req.GetRequestStream()) { reqStream.Write(data, 0, data.Length); } 但是是的,我会关闭请求流。它可能不是绝对必需的,但我不想假设这一点——特别是,除非您有充分的理由相信它不是必需的(例如文档),否则实现可能会随

哪条路比较好

A:

B:

备选案文C:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
using (Stream reqStream = req.GetRequestStream())
{
    reqStream.Write(data, 0, data.Length);
}
但是是的,我会关闭请求流。它可能不是绝对必需的,但我不想假设这一点——特别是,除非您有充分的理由相信它不是必需的(例如文档),否则实现可能会随着时间的推移而改变,并在以后破坏“惰性”代码

如果您经常这样做,您可以编写一个实用方法(甚至可能作为扩展方法):

那就叫它:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.WriteRequestData(data);

我参加聚会有点晚了,但这个问题仍然很重要。我想补充一点: 还演示/建议在写入完成时关闭流

Stream newStream = myHttpWebRequest.GetRequestStream ();
newStream.Write (byte1, 0, byte1.Length);
Console.WriteLine ("The value of 'ContentLength' property after sending the data is {0}", myHttpWebRequest.ContentLength);
// Close the Stream object.
newStream.Close ();
我喜欢@Jon的例子,并遵循类似的模式

public static void WriteRequestData(this WebRequest request, byte[] data)
{
    using (Stream reqStream = request.GetRequestStream())
    {
        reqStream.Write(data, 0, data.Length);
    }
}
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.WriteRequestData(data);
Stream newStream = myHttpWebRequest.GetRequestStream ();
newStream.Write (byte1, 0, byte1.Length);
Console.WriteLine ("The value of 'ContentLength' property after sending the data is {0}", myHttpWebRequest.ContentLength);
// Close the Stream object.
newStream.Close ();