gpt4 book ai didi

c# - 正确处理 responseStream 和 StreamReader 关闭

转载 作者:行者123 更新时间:2023-11-30 22:13:13 27 4
gpt4 key购买 nike

我有一个用 C# 编写的独立处理程序 (.ASHX),用于处理携带 XML 负载的传入推送通知,然后解析这些 XML 并提取和处理从中获取的任何必要信息。问题是我无法在本地测试这个,因为我们的开发环境防火墙太多,我不允许传入通知的异常(exception)情况。

我已经在我们的测试环境中对此进行了测试,并且正在正确接收和处理通知,但是在随机代码审查之后,看起来我处理 responseStreamsstreamReader

我的问题是,这是处理这些资源关闭的有效方法,还是会导致 NullReferenceException

处理这些资源的标准做法是什么,我应该使用 using 语句来使它们仅在该范围内使用,还是这段代码就足够了?

Stream responseStream = null;
StreamReader reader = null;
string serverResponse = null;

try
{
responseStream = response.GetResponseStream();
reader = new StreamReader(responseStream);
serverResponse = reader.ReadToEnd();
}

finally
{
if (reader == null)
{
reader.Close();
}

if (responseStream == null)
{
responseStream.Close();
}

response.Close();
}

最佳答案

最好使用 using block :

string serverResponse = null;
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream))
{
serverResponse = reader.ReadToEnd();
}
}

这样即使在 using 语句中出现异常,所有流也将被正确关闭。

关于c# - 正确处理 responseStream 和 StreamReader 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19266542/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com