使用webClient实现图片同步,异步下载

 

WebClient.DownloadFile 方法

将具有指定 URI 的资源下载到本地文件。

命名空间:System.Net

程序集:System(在 system.dll 中)

同步实现参考代码:

  private void btnsyndownload_Click(object sender, EventArgs e)
        {
            File.Delete("download.jpg");
            try
            {
                if (!File.Exists("download.jpg"))
                {
    WebClient client = new WebClient();                                            client.DownloadFile("https://ss0.baidu.com/Po3dSag_xI4khGko9WTAnF6hhy/image/h%3D300/sign=181318733ad12f2ed105a8607fc0d5ff/94cad1c8a786c9171cc12b9dc53d70cf3ac75757.jpg", "download.jpg");
                  picpicture.Image = Image.FromFile("download.jpg");
                }
            }
                catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

        }

 

WebClient.DownloadFileAsync 方法

将具有指定 URI 的资源下载到本地文件。此方法不会阻止调用线程。

命名空间:System.Net
程序集:System(在 system.dll 中)

异步实现参考代码:

 File.Delete("download.jpg");
            try
            {
                if (!File.Exists("download.jpg"))
                {
                    WebClient client = new WebClient();
               client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);

client.DownloadFileAsync(newUri("https://ss0.baidu.com/Po3dSag_xI4khGko9WTAnF6hhy/image/h%3D300/sign=181318733ad12f2ed105a8607fc0d5ff/94cad1c8a786c9171cc12b9dc53d70cf3ac75757.jpg"),"download.jpg");

 

                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
        void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {           
            picpicture.Image = Image.FromFile("download.jpg"); 

 

        }

 

 

 简单介绍一下WebClient:
    WebClient 类提供向 URI 标识的任何本地、Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法。
    WebClient 类使用 WebRequest 类提供对资源的访问。WebClient 实例可以通过任何已向 WebRequest.RegisterPrefix 方法注册的 WebRequest 子代访问数据。
    注意
    默认情况下,.NET Framework 支持以 http:、https:、ftp:、和 file: 方案标识符开头的 URI。 

    下面描述用于将数据上载到资源的 WebClient 方法: 
    OpenWrite  检索一个用于将数据发送到资源的 Stream。
    OpenWriteAsync  检索 Stream,它在不阻止调用线程的情况下将数据发送到资源。
    UploadData  将字节数组发送到资源,并返回包含任何响应的 Byte 数组。
    UploadDataAsync  在不阻止调用线程的情况下,将 Byte 数组发送到资源。
    UploadFile  将本地文件发送到资源,并返回包含任何响应的 Byte 数组。
    UploadFileAsync  在不阻止调用线程的情况下,将本地文件发送到资源。
    UploadValues  将 NameValueCollection 发送到资源,并返回包含任何响应的 Byte 数组。
    UploadValuesAsync  在不阻止调用线程的情况下,将 NameValueCollection 发送到资源,并返回包含任何响应的 Byte 数组。
    UploadString  在不阻止调用线程的情况下,将 String 发送到资源。
    UploadStringAsync  在不阻止调用线程的情况下,将 String 发送到资源。 

    下面描述从资源下载数据的 WebClient 方法: 
    OpenRead  从资源以 Stream 的形式返回数据。
    OpenReadAsync  在不阻止调用线程的情况下,从资源返回数据。
    DownloadData 从资源下载数据并返回 Byte 数组。
    DownloadDataAsync  在不阻止调用线程的情况下,从资源下载数据并返回 Byte 数组。
    DownloadFile  从资源将数据下载到本地文件。
    DownloadFileAsync  在不阻止调用线程的情况下,将数据从资源下载到本地文件。
    DownloadString  从资源下载 String 并返回 String。
    DownloadStringAsync  在不阻止调用线程的情况下,从资源下载 String。 

posted @ 2018-12-21 16:00  程沐喆  阅读(691)  评论(0编辑  收藏  举报