源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

.NET 4.5 异步IO 相关实例

  • 时间:2021-03-25 13:41 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:.NET 4.5 异步IO 相关实例
在C/S架构中,不管是传统的winform还是wpf都可能会遇到进行异步操作文件的时候。文件小还好说,直接写操作代码。 如果是大文件很多时候做成异步的操作。在界面上显示一个进度条什么的,后台使用一个backgroundworker来做。在这里告诉大家在.NET Framework4.5中支持异步IO的操作。大大简化之前些的异步方法代码。 [b]使用backgroundworker代码 [/b]
[u]复制代码[/u] 代码如下:
View Code private void Button_Click_3(object sender, RoutedEventArgs e)         {             System.ComponentModel.BackgroundWorker bak = new System.ComponentModel.BackgroundWorker();             bak.DoWork += bak_DoWork;             bak.RunWorkerCompleted += bak_RunWorkerCompleted;             bak.RunWorkerAsync();                  }         void bak_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)         {             string sourceDir = @"E:\";             string endDir = @"F:\";             foreach (string filename in Directory.EnumerateFiles(sourceDir))             {                 using (FileStream SourceStream = File.Open(filename, FileMode.Open))                 {                     using (FileStream DestinationStream = File.Create(endDir + filename.Substring(filename.LastIndexOf('\\'))))                     {                         SourceStream.CopyTo(DestinationStream);                     }                 }             }         }         void bak_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)         {             MessageBox.Show("ok");         }
以上应该是最基本的操作了,代码是不是很多?看看.NET Framework 4.5的写法吧。
[u]复制代码[/u] 代码如下:
private async void Button_Click_2(object sender, RoutedEventArgs e)         {             string sourceDir = @"E:\";             string endDir = @"F:\";             foreach (string filename in Directory.EnumerateFiles(sourceDir))             {                 using (FileStream SourceStream = File.Open(filename, FileMode.Open))                 {                     using (FileStream DestinationStream = File.Create(endDir + filename.Substring(filename.LastIndexOf('\\'))))                     {                         await SourceStream.CopyToAsync(DestinationStream);                     }                 }             }             MessageBox.Show("ok");         }
[b]希望能帮助到一些人。 [/b]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部