C# 文件異步操作

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;//文件異步操作
namespace FileAsynchronousOperation
{class Program{static void Main(string[] args){//實例化MyFile類MyFile myFile = new MyFile();//定義參數string filePath = "D:\\testasy.txt";string msg = "helloworld";//調用異步操作方法
            myFile.AsynchronousOperation(filePath,msg);}}/// <summary>/// 文件/// </summary>class MyFile{/// <summary>/// 文件異步操作/// </summary>/// <param name="filePath">文件路徑</param>/// <param name="msg">寫入內容</param>public void AsynchronousOperation(string filePath,string msg){FileStream fileSteam = null;FileInfo fileinfo = new FileInfo(filePath);//判斷文件是否存在if (!fileinfo.Exists){fileSteam = fileinfo.Create();Console.WriteLine("創建文件{0}", filePath);fileSteam.Close();}fileSteam = new FileStream(filePath, FileMode.Open, FileAccess.Write, FileShare.None, 4096, true);Console.WriteLine("開啟異步操作{0}", fileSteam.IsAsync);byte[] buffer = Encoding.Default.GetBytes(msg);//開始執行異步操作IAsyncResult asynncResult = fileSteam.BeginWrite(buffer,0, buffer.Length, new AsyncCallback(EndWriteCallBack), fileSteam);Console.WriteLine("開始異步寫入請稍候...");Console.Read();}/// <summary>/// 回調函數/// </summary>/// <param name="asyncResult">狀態</param>public void EndWriteCallBack(IAsyncResult asyncResult){Console.WriteLine("異步寫入開始...");FileStream stream = asyncResult.AsyncState as FileStream;//轉化為FileStream類型if (stream!=null){stream.EndWrite(asyncResult);stream.Close();}Console.WriteLine("寫入完成");}}
}
Filestreom 在對文件進行異步操作時,對大數據量讀寫操作使用 BeginRead 和 Begin 樹 rite 方法的效果更好;
而對于數據量較少的讀寫操作,使川異步方式的速度可能會比同步方式要慢。
所以,你需要針對應用程序的實際情況決定是否要選擇異步處理方式。

轉載于:https://www.cnblogs.com/lbonet/p/7396319.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394434.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394434.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394434.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟考 中級職稱哪些最熱門_我如何利用有史以來最熱門的中級故事來建立排行榜。 以及它幾乎是怎么死的。...

軟考 中級職稱哪些最熱門by Michael Deng鄧小平 我如何利用有史以來最熱門的中級故事來建立排行榜。 以及它幾乎是怎么死的。 (How I built a leaderboard with the top Medium stories of all time. And how it almost died.) Last year I built Top Medium Stories — a web…

面試題一

1.html頁面由標簽組成&#xff0c;請寫出<head>中腳本定義標簽、下拉選擇框標簽  腳本定義標簽&#xff1a;<javascript></javascript>   下拉框選擇標簽&#xff1a;<select><option values""></option></select> 2…

leetcode712. 兩個字符串的最小ASCII刪除和(動態規劃)-Gogo

給定兩個字符串s1, s2&#xff0c;找到使兩個字符串相等所需刪除字符的ASCII值的最小和。 示例 1: 輸入: s1 “sea”, s2 “eat” 輸出: 231 解釋: 在 “sea” 中刪除 “s” 并將 “s” 的值(115)加入總和。 在 “eat” 中刪除 “t” 并將 116 加入總和。 結束時&#xff0…

python中封裝是什么意思_Python中數據封裝是什么?

封裝——“隱藏一切可以隱藏的實現細節&#xff0c;只向外界暴露(提供)簡單的編程接口”。在上節的 Student 類中&#xff0c;每個實例就擁有各自的 name 和 age 這些數據。我們可以通過函數來訪問這些數據&#xff0c;比如打印一個學生的年齡&#xff1a;>>> def pri…

jieba庫的使用

jieba庫的使用: jieba庫是一款優秀的 Python 第三方中文分詞庫&#xff0c;jieba 支持三種分詞模式&#xff1a;精確模式、全模式和搜索引擎模式&#xff0c;下面是三種模式的特點。 精確模式&#xff1a;試圖將語句最精確的切分&#xff0c;不存在冗余數據&#xff0c;適合做文…

Go語言實現HashSet

set.go // set project set.go package settype Set interface {Add(e interface{}) boolRemove(e interface{})Clear()Contains(e interface{}) boolLen() intSame(other Set) boolElements() []interface{}String() string }// 將集合other添加到集合one中 func AddSet(one S…

c#控件彈幕效果_C# Form 實現桌面彈幕

使用C# Form 簡單的實現了彈幕效果1.創建一個Form 設置2.添加一個計時器3. 代碼using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Drawing.Text;using System.Linq;using System.Text;using S…

Makefile中怎么使用Shell if判斷

/********************************************************************** Makefile中怎么使用Shell if判斷* 說明&#xff1a;* 譬如可能會在Makfile中需要判斷文件、文件夾的存在&#xff0c;使用shell語法* 輸出一些信息&#xff0c;等等。** …

我如何使用React和Typescript在freeCodeCamp中構建天氣應用

by Kelvin Mai通過凱文麥 我如何使用React和Typescript在freeCodeCamp中構建天氣應用 (How I built the weather app in freeCodeCamp using React and Typescript) So I finally decided to come back to freeCodeCamp and try to finish out my Front End Development Certi…

mysql結果集相減_MySQL_(Java)使用JDBC向數據庫發起查詢請求

課程相關鏈接&#xff1a;JDBC編程和MySQL數據庫課程源代碼在文章末尾~Java Database Connectivity簡單來說就是使用Java里面提供的一些類和方法&#xff0c;利用程序鏈接數據庫&#xff0c;進行增刪改查操作。這個過程就叫做JDBC編程接下來我們便分五步通過JDBC對MySQL中的數據…

在雙系統(Windows與Ubuntu)下刪除Ubuntu啟動項

問題概述&#xff1a;因為在自己學習Linux的時候&#xff0c;按照網上的教程錯誤的刪除了Ubuntu的一個內核驅動&#xff0c;導致Ubuntu不能啟動。我想到的辦法是重新安裝系統&#xff0c;重裝系統的第一步便是將Ubuntu從電腦中卸載。該筆記是有關如何刪除Ubuntu啟動項的。 使用…

iangularjs 模板_2018-web前端的自我介紹-優秀word范文 (5頁)

本文部分內容來自網絡整理&#xff0c;本司不為其真實性負責&#xff0c;如有異議或侵權請及時聯系&#xff0c;本司將立即刪除&#xff01;本文為word格式&#xff0c;下載后可方便編輯和修改&#xff01;web前端的自我介紹篇一&#xff1a;個人總結的web前端面試題1、自我介紹…

Teradata QueryGrid整合最佳分析技術 拓展客戶選擇空間

ZDNET至頂網CIO與應用頻道 05月11日 北京消息&#xff1a; 為持續幫助企業克服數據散布在不同分析系統的困難&#xff0c;全球領先的大數據分析和營銷應用服務供應商Teradata天睿公司宣布對Teradata QueryGrid 進行重要技術升級。此次升級新增并強化六項QueryGrid技術&#xf…

神舟筆記本bios_海爾雷神(藍天)神舟戰神游戲本風扇狂轉掉電大寫燈狂閃維修實例...

昨天收到一臺網友寄過來的海爾雷神游戲本。說到這個游戲本品牌&#xff0c;其實有幾個品牌的筆記本&#xff0c;它們的主板和模具是一模一樣的&#xff0c;也就是我們看到的品牌log不一樣而已。比如神舟的戰神 &#xff0c;機械師&#xff0c;機械革命&#xff0c;麥本本等等。…

Oracle 學習----:查看當前時間與Sqlserver語句不一樣了

oracle:select sysdate from dual sqlserver: select getdate() ---------------------試試這個---------------------------------------------------------- insert into OracleTab values(sysdate) insert into SqlserverTab values(getdate())轉載于:https://www.cnblogs…

react發送和接收請求_React行為編程簡介:請求,等待和阻止

react發送和接收請求by Luca Matteis盧卡馬蒂斯(Luca Matteis) React行為編程簡介&#xff1a;請求&#xff0c;等待和阻止 (An intro to Behavioral Programming with React: request, wait, and block) Behavioral Programming (BP) is a paradigm coined in the 2012 artic…

leetcode96. 不同的二叉搜索樹(動態規劃)

給定一個整數 n&#xff0c;求以 1 … n 為節點組成的二叉搜索樹有多少種&#xff1f; 解題思路 *數組含義&#xff1a;dp[i] i個節點的不同組成結構 狀態轉移&#xff1a;任取節點為根節點&#xff0c;遍歷左右子樹可能出現的個數,dp[i]dp[left]dp[right] 初始化&#xff1a…

“康園圈--互聯網+校園平臺“項目之成果展示及項目總結

一、總體效果&#xff08;ipad端截圖&#xff09; 網站前臺頁面網站后臺管理臺頁面二、前臺訪問鏈接&#xff08;用pc訪問效果最佳&#xff09;&#xff1a;http://www.liangzhilin.cn:9100/kangyuanquan/ &#xff08;為保證數據安全&#xff0c;后臺管理鏈接不對外公開&#…

ajax jq 圖片上傳請求頭_Jquery ajaxsubmit上傳圖片實現代碼

這是數月前的事情了&#xff0c;場景是這樣的&#xff1a; 在進行圖片上傳的時&#xff0c;我發現開發人員使用的上傳圖片方式是Iframe 傳統的 http post 來處理的。而且未建立統一上傳函數。于是將代碼改造了。心想來個ajax異步上傳圖片吧&#xff0c;這技術應該很老套了。于…

這個免費的交互式課程在一小時內學習JavaScript

JavaScript is the most popular programming language on the web. You can use it to create websites, servers, games and even native apps. So no wonder it’s such a valuable skill in today’s job market.JavaScript是網絡上最流行的編程語言。 您可以使用它來創建網…