【C#】往异步下载的方法传递自定义完成事件
2016-12-29 09:43
369 查看
封装自定义的异步下载方法时,正常情况下是这样的:
但是有的时候,这个方法会被多处调用,而不同的调用者希望下载完成后的回调中执行不同的操作。这就要求将自定义下载完成的事件作为参数传递进来,让不同的调用者各自处理自己下载完成后的逻辑。
可以改写成这样:
参数Client_DownloadFileCompleted的具体内容由调用者自行决定。
写法:
VS中在client.DownloadFileCompleted身上按F12可以看到这个event的具体类型,然后才能准备一个这个类型的参数。直接传参event类型会报错无法类型隐式转换。
/// <summary> /// 异步方法:联网下载文件,保存到本地。 /// </summary> /// <param name="uri">资源的网络地址</param> /// <param name="fileName">保存到本地的地址、文件名、后缀格式</param> public static void DownloadFileTaskAsync(string uri, string fileName) { using (WebClient client = new WebClient()) { client.DownloadFileAsync(new Uri(uri), fileName); client.DownloadFileCompleted += Client_DownloadFileCompleted; } } private static void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) { throw new NotImplementedException(); }
但是有的时候,这个方法会被多处调用,而不同的调用者希望下载完成后的回调中执行不同的操作。这就要求将自定义下载完成的事件作为参数传递进来,让不同的调用者各自处理自己下载完成后的逻辑。
可以改写成这样:
/// <summary> /// 异步方法:联网下载文件,保存到本地。 /// </summary> /// <param name="uri">资源的网络地址</param> /// <param name="fileName">保存到本地的地址、文件名、后缀格式</param> public static void DownloadFileTaskAsync(string uri, string fileName, AsyncCompletedEventHandler Client_DownloadFileCompleted) { using (WebClient client = new WebClient()) { client.DownloadFileAsync(new Uri(uri), fileName); client.DownloadFileCompleted += Client_DownloadFileCompleted; } }
参数Client_DownloadFileCompleted的具体内容由调用者自行决定。
写法:
VS中在client.DownloadFileCompleted身上按F12可以看到这个event的具体类型,然后才能准备一个这个类型的参数。直接传参event类型会报错无法类型隐式转换。
相关文章推荐
- asp.net中c#自定义事件的实现方法详解
- 应用程序调用_驱动B调用_驱动A_异步方法1_带完成历程_事件
- C#使用semaphore来管理异步下载请求的方法
- C# 自定义事件并使用自定义事件参数方法
- 【C#】往按钮事件中传递自定义参数
- dojo小例子(15)给dojo on的事件处理函数传递自定义参数的两种方法
- C#利用异步委托完成文件下载并返回
- C#下载歌词文件的同步和异步方法
- C#中窗体间传递数据的几种方法
- ASP和C#隐藏文件下载路径的方法
- C#中的自定义结构转换操作符的定义方法
- [导入]C# 为一个方法添加事件的方法 Event delegate
- ASP和C#隐藏文件下载路径的方法
- 浅析C#的事件处理和自定义事件
- .Net Remoting 事件回调 Client 函数方法完整实例: C# 实现控制台网络聊天室 (Console Remoting ChatRoom)
- 用 C# 做组件设计时的事件实现方法讨论
- C# 写的 HttpRequsetResponse 类,异步、事件... 还热乎着呢!
- C#"焦点事件"中的Validating处理方法
- C# 写的 HttpRequsetResponse 类,异步、事件... 还热乎着呢!