using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Net;
|
using System.Text;
|
|
|
namespace Shared.Net
|
{
|
/// <summary>
|
/// 异步下载图片
|
/// </summary>
|
public class DownLoadImageAsync
|
{
|
/// <summary>
|
/// 当前的webClient对象
|
/// </summary>
|
private System.Net.WebClient webClient = new WebClient();
|
/// <summary>
|
/// 用户名
|
/// </summary>
|
public string Name;
|
/// <summary>
|
/// 密码
|
/// </summary>
|
public string Password;
|
/// <summary>
|
/// 地址
|
/// </summary>
|
private Uri uri;
|
/// <summary>
|
/// 异步下载图片
|
/// </summary>
|
/// <param name="uri">链接地址</param>
|
/// <param name="name">登记用户名</param>
|
/// <param name="password">密码</param>
|
public DownLoadImageAsync(Uri uri,string name,string password)
|
{
|
this.uri = uri;
|
this.Name = name;
|
this.Password = password;
|
}
|
/// <summary>
|
/// 下载进度变化事件
|
/// </summary>
|
public event DownloadProgressChangedEventHandler DownloadProgressChanged;
|
|
/// <summary>
|
/// 下载完成
|
/// </summary>
|
public event DownloadDataCompletedEventHandler DownloadDataCompleted;
|
|
/// <summary>
|
/// 开始异步下载
|
/// </summary>
|
public async void StartDownloadImageAsync()
|
{
|
// var url = new Uri("http://192.168.2.210/tmpfs/auto.jpg");
|
|
webClient.DownloadProgressChanged += HandleDownloadProgressChanged;
|
webClient.DownloadDataCompleted += webClient_DownloadDataCompleted;
|
|
try
|
{
|
string newValue = Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(Name + ":" + Password));
|
|
webClient.Headers.Add("Content-Type", "image/webp,*/*;q=0.8");
|
webClient.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
|
webClient.Headers.Add("Authorization", "Basic " + newValue);
|
await webClient.DownloadDataTaskAsync(this.uri);
|
}
|
catch
|
{
|
DownloadDataCompleted("异步完成", null);
|
}
|
|
}
|
|
|
/// <summary>
|
/// 下载图片完成
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
void webClient_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
|
{
|
if (DownloadDataCompleted != null)
|
{
|
DownloadDataCompleted(sender, e);
|
}
|
}
|
|
/// <summary>
|
/// 下载进度变化
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
void HandleDownloadProgressChanged (object sender, DownloadProgressChangedEventArgs e)
|
{
|
if (DownloadProgressChanged != null)
|
{
|
DownloadProgressChanged(sender, e);
|
}
|
}
|
|
/// <summary>
|
/// 取消下载
|
/// </summary>
|
public void CancelDownload()
|
{
|
webClient.CancelAsync();
|
webClient.DownloadProgressChanged -= HandleDownloadProgressChanged;
|
}
|
|
|
}
|
}
|