日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

异步读写数据流

發布時間:2025/7/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 异步读写数据流 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、異步讀取數據

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Threading;namespace UseBeginRead {class Program{//定義異步讀取狀態類class AsyncState{public FileStream FS { get; set; }public byte[] Buffer { get; set; }public ManualResetEvent EvtHandle { get; set; }}static int bufferSize = 512;static void Main(string[] args){string filePath = "d:\\test.txt";//以只讀方式打開文件流using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read)){var buffer = new byte[bufferSize];//構造BeginRead需要傳遞的狀態var asyncState = new AsyncState { FS = fileStream, Buffer = buffer ,EvtHandle = new ManualResetEvent(false)};//異步讀取IAsyncResult asyncResult = fileStream.BeginRead(buffer, 0, bufferSize, new AsyncCallback(AsyncReadCallback), asyncState);//阻塞當前線程直到讀取完畢發出信號asyncState.EvtHandle.WaitOne();Console.WriteLine();Console.WriteLine("read complete");Console.Read();}}//異步讀取回調處理方法public static void AsyncReadCallback(IAsyncResult asyncResult){var asyncState = (AsyncState)asyncResult.AsyncState;int readCn = asyncState.FS.EndRead(asyncResult);//判斷是否讀到內容if (readCn > 0){byte[] buffer;if (readCn == bufferSize) buffer = asyncState.Buffer;else{buffer = new byte[readCn];Array.Copy(asyncState.Buffer, 0, buffer, 0, readCn);}//輸出讀取內容值string readContent = Encoding.UTF8.GetString(buffer);Console.Write(readContent);}if (readCn < bufferSize){asyncState.EvtHandle.Set();}else {Array.Clear(asyncState.Buffer, 0, bufferSize);//再次執行異步讀取操作asyncState.FS.BeginRead(asyncState.Buffer, 0, bufferSize, new AsyncCallback(AsyncReadCallback), asyncState);}}} }

?二、異步寫入數據

class Program{/// <summary>/// 異步回調需要的參數封裝類/// </summary>class AsyncState {public int WriteCountOnce { get; set; }public int Offset { get; set; }public byte[] Buffer { get; set; }public ManualResetEvent WaitHandle { get; set; }public FileStream FS { get; set; }}static void Main(string[] args){//準備一個1K的字節數組byte[] toWriteBytes = new byte[1 << 10];for (int i = 0; i < toWriteBytes.Length; i++){toWriteBytes[i] = (byte)(i % byte.MaxValue);}string filePath = "d:\\test.txt";//FileStream實例using (var fileStream = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite, FileShare.Read)){ int offset = 0;//每次寫入32字節int writeCountOnce = 1 << 5;//構造回調函數需要的狀態AsyncState state = new AsyncState{WriteCountOnce = writeCountOnce,Offset = offset,Buffer = toWriteBytes,WaitHandle = new ManualResetEvent(false),FS = fileStream};//做異步寫操作fileStream.BeginWrite(toWriteBytes, offset, writeCountOnce, WriteCallback, state);//等待寫完畢或者出錯發出的繼續信號state.WaitHandle.WaitOne();}Console.WriteLine("Done");Console.Read();}/// <summary>/// 異步寫的回調函數/// </summary>/// <param name="asyncResult">寫狀態</param>static void WriteCallback(IAsyncResult asyncResult){AsyncState state = (AsyncState)asyncResult.AsyncState;try{state.FS.EndWrite(asyncResult);}catch (Exception ex){Console.WriteLine("EndWrite Error:" + ex.Message);state.WaitHandle.Set();return;}Console.WriteLine("write to " + state.FS.Position);//判斷是否寫完,未寫完繼續異步寫if (state.Offset + state.WriteCountOnce < state.Buffer.Length){state.Offset += state.WriteCountOnce;Console.WriteLine("call BeginWrite again");state.FS.BeginWrite(state.Buffer, state.Offset, state.WriteCountOnce, WriteCallback, state);}else {//寫完發出完成信號state.WaitHandle.Set();}}

?

轉載于:https://www.cnblogs.com/wywnet/p/4763693.html

總結

以上是生活随笔為你收集整理的异步读写数据流的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩精品一区在线视频 | 国产专区欧美专区 | 久久午夜神器 | 奴色虐av一区二区三区 | 99riav国产精品 | 亚洲欧美中文字幕5发布 | 91玉足脚交嫩脚丫在线播放 | 182tv午夜| 久久泄欲网 | 久久99深爱久久99精品 | 天天夜夜啦啦啦 | 五月天丁香社区 | 中文字幕一区二区三区四区免费看 | 天天综合网入口 | 四虎在线影院 | 中国少妇av | 日韩av资源网 | 亚洲在线免费视频 | 久久人人看 | 色欲无码人妻久久精品 | 欧美三级韩国三级日本三斤 | 欧美日韩中文国产一区发布 | 91热精品| 亚洲成人麻豆 | 日韩欧美一区二区三区在线 | 国产精品黄色 | 国产无套内射普通话对白 | 91精品国产欧美一区二区 | 91调教打屁股xxxx网站 | 尤物网址在线观看 | 欧美日韩精品在线观看视频 | 久久午夜精品视频 | 亚洲a∨无码无在线观看 | 国产最新毛片 | 永久免费观看av | 午夜高潮视频 | 欧美日韩在线观看视频 | 三上悠亚痴汉电车 | 亚洲精品国产熟女久久久 | 91老师片黄在线观看 | 中文字幕一区二区三区乱码在线 | 日本护士取精xxxxxhd | a网站在线| 国产精品国产三级国产aⅴ无密码 | 中文字幕一区二区三区乱码人妻 | 狂野欧美性猛交xxxx巴西 | 久久久久久久久福利 | 日本免费在线一区 | 高潮一区二区三区乱码 | 午夜伦理在线观看 | 用我的手指扰乱你 | 欧美精品性生活 | av美女在线 | 欧美视频一区二区 | 精品人妻无码专区在线 | 中文精品一区二区三区 | 成人性生生活性生交3 | 一区二区三区在线免费观看 | 香蕉久久精品 | 国产日韩激情 | 中日韩在线 | 91av在线视频观看 | 欧美在线 | 亚洲 | 进去里片欧美 | 日韩天天干 | 在线观看高h | 亚洲一区二区麻豆 | 影音先锋在线看片资源 | 国产女同91疯狂高潮互磨 | 欧美黑人精品一区二区 | 色图自拍 | 国产精品一区二区小说 | 欧美精品在线免费观看 | 色爱成人综合 | 国产中文字幕第一页 | 日本一级一片免费视频 | 高h调教冰块play男男双性文 | 国产精品美女毛片真酒店 | 日韩av手机在线播放 | 一本一道波多野结衣一区二区 | 亚洲va视频 | 椎名由奈在线观看 | 久久曹| 懂色av一区二区三区四区 | 成人黄网免费观看视频 | 国产一区二区激情 | 番号动态图 | 亚洲成成品网站 | av一区二区不卡 | 日本免费一区二区三区 | 嫩草av91| 国产综合第一页 | 91久精品| 波多野结衣亚洲一区 | 黄瓜视频色 | 99视频一区 | 日韩av在线中文字幕 | 亚洲播放器 | 亚洲毛片一级 |