一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - ASP.NET教程 - .NET 4.5 異步IO 相關(guān)實(shí)例

.NET 4.5 異步IO 相關(guān)實(shí)例

2019-11-03 19:24asp.net教程網(wǎng) ASP.NET教程

本篇文章小編為大家介紹,.NET 4.5 異步IO 相關(guān)實(shí)例,需要的朋友參考下

在C/S架構(gòu)中,不管是傳統(tǒng)的winform還是wpf都可能會(huì)遇到進(jìn)行異步操作文件的時(shí)候。文件小還好說(shuō),直接寫(xiě)操作代碼。

如果是大文件很多時(shí)候做成異步的操作。在界面上顯示一個(gè)進(jìn)度條什么的,后臺(tái)使用一個(gè)backgroundworker來(lái)做。在這里告訴大家在.NET Framework4.5中支持異步IO的操作。大大簡(jiǎn)化之前些的異步方法代碼。

使用backgroundworker代碼

復(fù)制代碼代碼如下:


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的寫(xiě)法吧。

復(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");
        }


希望能幫助到一些人。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 毛片区| 舔小说| 日韩欧美一区二区在线观看 | 九九精品视频在线播放 | 久热这里在线精品 | 欧美高清乌克兰精品另类 | 成人福利在线观看 | 国产精品一区二区三 | 叛佛 作者满栀小说免费阅读 | 精品在线看 | 506rr亚洲欧美| 免费片在线观看 | 四虎库 | 91夜夜操| 国产成人在线视频播放 | 丝袜美女被艹 | 特级非洲黑人一级毛片 | 国产成人啪精品视频站午夜 | 国产成人影院在线观看 | 国内在线播放 | 逼中极品 | 色老汉 | 国产尤物视频 | 九九免费高清在线观看视频 | 四色6677最新永久网站 | 四虎精品永久在线网址 | 扒开双腿猛进入爽爽视频ai | 操一炮| 毛片网在线观看 | 日韩在线天堂免费观看 | 久久综合老色鬼网站 | 2019韩国最新三级 | 人人澡 人人澡碰人人看软件 | 日本高清视频在线免费观看 | 亚洲阿v天堂在线2017 | 天天操天天干天天 | 91看片淫黄大片欧美看国产片 | 91小视频在线观看免费版高清 | gaygayas男男免费中国 | 久久成人永久免费播放 | 国产成人啪精品午夜在线观看 |