您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“.NET4.5中異步IO的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“.NET4.5中異步IO的示例分析”這篇文章吧。
在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的寫法吧。
復(fù)制代碼 代碼如下:
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");
}
以上是“.NET4.5中異步IO的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。