【发布时间】:2011-04-01 16:36:18
【问题描述】:
我正在尝试使用类似于WebRequest 的接口实现一个网络协议类,特别是使用GetRequestStream 返回的输入流,但是我很难确定请求流何时完成,因为它没有任何事件(处置等)。
如何监控流以确定何时关闭/处置?我唯一的选择是将其包装在实现Stream 的类中吗?
特别是,我正在使用 FtpWebRequest 不具备的某些功能(SITE、ALLOC 等)实现 FTP。我需要知道数据流何时关闭/完成,以便检查命令流是否有成功或错误消息。
【问题讨论】:
-
您的目标是检测网络连接何时从远程端关闭?
-
@Jon,本地代码(类的用户)或远程站点没有关闭任何流。在正常使用情况下,它将是本地端处理流(完成发送数据)。
-
那么 Aliostad 的回答就是正确的。您当然可以自己实现“抱歉,商店已关闭”事件;在更高级别的课程上,这可能比
Stream本身更有意义。 -
@CRoss 考虑一下。为什么没有 .NET 资源(文件流、数据库连接、位图等)公开这样的事件?因为在处理资源时,每个资源都必须有一个所有者,并且该所有者必须显式释放资源(
Dispose模式)。现在所有者可以愉快地实现这样的事件了。