zoukankan      html  css  js  c++  java
  • C#用WebClient下载File时操作超时的问题

    这个是原代码:

    System.Net.WebClient wc = new System.Net.WebClient();

    wc.OpenRead("http://patrickkroft.com/mp3/Pearl.mp3");

    Int64 bytes_total= Convert.ToInt64(wc.ResponseHeaders["Content-Length"])

    MessageBox.Show(bytes_total.ToString() + " Bytes");



    以上的代码实在是很不负责,坑爹的写的。改进成下面:

    System.Net.WebClient wc = new System.Net.WebClient();

    Stream stream = wc.OpenRead(folderEntity.URI);
    Int64 bytes_total = Convert.ToInt64(wc.ResponseHeaders["Content-Length"]);
    stream.Close(); //以及释放内存
    wc.Dispose();//及时释放,避免第二次下载时, 奇怪的"操作超时"的问题

    用WebClient异步下载文件,但是如果下载过程中出现异常(例如URL不存在、网络中断等),将不会报错,照样下载0字节文件,并且下载0字节完成后同样激活DownloadFileCompleted事件。

    我想在异步下载过程中捕获异常,如果URL不存在则激活某个事件跳转到另外一个分支去执行程序(例如弹出对话框提示下载失败)

    请问应该怎么捕获DownloadFileAsync的异常?

    DownloadFileAsync 在下载失败时的确会抛出WebException异常,但是用try...catch是捕获不到这个异常的,这个异常由.NET自动传给了 DownloadFileCompleted事件里的AsyncCompletedEventArgs参数e,由e.error获得这个异常。

  • 相关阅读:
    Jquery-EasyUI学习2~
    IIS——发布网站
    一致性哈希算法
    利用ZTree链接数据库实现 [权限管理]
    Form表单提交的简要方式
    Redis学习之5种数据类型操作、实现原理及应用场景
    redis对比其余数据库
    ZooKeeper概述(转)
    Zookeeper-Zookeeper可以干什么
    Java内存分配及变量存储位置实例讲解
  • 原文地址:https://www.cnblogs.com/wuzehao/p/4663007.html
Copyright © 2011-2022 走看看