.NET 4.5 異步IO 相關(guān)實(shí)例
在C/S架構(gòu)中,不管是傳統(tǒng)的winform還是wpf都可能會(huì)遇到進(jìn)行異步操作文件的時(shí)候。文件小還好說,直接寫操作代碼。
如果是大文件很多時(shí)候做成異步的操作。在界面上顯示一個(gè)進(jìn)度條什么的,后臺(tái)使用一個(gè)backgroundworker來做。在這里告訴大家在.NET Framework4.5中支持異步IO的操作。大大簡(jiǎn)化之前些的異步方法代碼。
使用backgroundworker代碼
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");
}
以上應(yīng)該是最基本的操作了,代碼是不是很多?看看.NET Framework 4.5的寫法吧。
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");
}
希望能幫助到一些人。
相關(guān)文章
asp.net mvc下拉框Html.DropDownList 和DropDownListFor的常用方法
這篇文章主要介紹了asp.net mvc下拉框Html.DropDownList 和DropDownListFor的常用方法 ,需要的朋友可以參考下2014-10-10
.NET微服務(wù)架構(gòu)CI/CD自動(dòng)打包鏡像
這篇文章介紹了.NET使用微服務(wù)架構(gòu)CI/CD自動(dòng)打包鏡像的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01
asp.net 通過httpModule計(jì)算頁面的執(zhí)行時(shí)間
有時(shí)候我們想檢測(cè)一下網(wǎng)頁的執(zhí)行效率。記錄下開始請(qǐng)求時(shí)的時(shí)間和頁面執(zhí)行完畢后的時(shí)間點(diǎn),這段時(shí)間差就是頁面的執(zhí)行時(shí)間了。要實(shí)現(xiàn)這個(gè)功能,通過HttpModule來實(shí)現(xiàn)是最方便而且準(zhǔn)確的。2011-02-02
form身份驗(yàn)證通過后,只能用FormsAuthentication.RedirectFromLoginPage
form身份驗(yàn)證通過后,只能用FormsAuthentication.RedirectFromLoginPage2009-03-03
ASP.NET?Core?Web?API之Token驗(yàn)證的實(shí)現(xiàn)
本文主要介紹了ASP.NET?Core?Web?API之Token驗(yàn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
asp.net 簡(jiǎn)單工廠模式和工廠方法模式之論述
簡(jiǎn)單工廠模式的最大優(yōu)點(diǎn)在于工廠類中包含了必要的邏輯判斷,根據(jù)客戶端的選擇條件動(dòng)態(tài)實(shí)例化相關(guān)的類,對(duì)于客戶端來說,去除了于具體產(chǎn)品的依賴2011-12-12
asp.net core MVC之實(shí)現(xiàn)基于token的認(rèn)證
這篇文章主要介紹了asp.net core MVC之實(shí)現(xiàn)基于token的認(rèn)證,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05

