使用C#的进度和速度下载/上传最有效/准确的方式?

时间:2011-05-16 21:09:20

标签: c#

上传和下载文件非常简单。在显示进度和传输速率时这样做让我质疑最佳方法。我正在寻找那种完美的方式。该方法易于使用,准确,重量轻。试过并且是真的。

我正在谈论的情况是,例如,从WebResponse或其他一些基于流的传输下载文件。下载就像(4.0这里)一样简单:

HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream bufferedresponse = new BufferedStream(response.GetResponseStream());
bufferedresponse.CopyTo(TargetStream);
bufferedresponse.Close();

在完成下载之前,您无法找到传输速率,即使这只是一个平均值。我想的是一瞬间的触摸。我并不总是需要一个完整的WebBrowser对象,特别是在REST API包装器中(这个特定的示例来自),此外,WebBrowser是否也尝试解析DOM并呈现它的内容?

是否有绑定技术或简单的多线程方法?我忽略了流类的属性/事件吗?完全是另一类?

1 个答案:

答案 0 :(得分:2)

您需要创建一个“ObservableStream”,它将通过递增进度条和更新遥测来触发您可以处理的可订阅事件。

尝试使用Reactive Extensions库实现此实现:http://staceyw.posterous.com/observe-a-network-stream-using-rx