|
[b]名称 [/b] |
[b]说明[/b] |
| AsyncState | 获取用户定义的对象,它限定或包含关于异步操作的信息。 |
| AsyncWaitHandle | 获取用于等待异步操作完成的 WaitHandle。 |
| CompletedSynchronously | 获取一个值,该值指示异步操作是否同步完成。 |
| IsCompleted | 获取一个值,该值指示异步操作是否已完 |
using System;
using System.IO;
using System.Threading;
namespace AsynSample
{
class FileReader
{
/// <summary>
/// 缓存池
/// </summary>
private byte[] Buffer { get; set; }
/// <summary>
/// 缓存区大小
/// </summary>
public int BufferSize { get; set; }
public FileReader(int bufferSize)
{
this.BufferSize = bufferSize;
this.Buffer = new byte[BufferSize];
}
/// <summary>
/// 同步读取文件
/// </summary>
/// <param name="path">文件路径</param>
public void SynsReadFile(string path)
{
Console.WriteLine("同步读取文件 begin");
using (FileStream fs = new FileStream(path, FileMode.Open))
{
fs.Read(Buffer, 0, BufferSize);
string output = System.Text.Encoding.UTF8.GetString(Buffer);
Console.WriteLine("读取的文件信息:{0}",output);
}
Console.WriteLine("同步读取文件 end");
}
/// <summary>
/// 异步读取文件
/// </summary>
/// <param name="path"></param>
public void AsynReadFile(string path)
{
Console.WriteLine("异步读取文件 begin");
//执行Endread时报错,fs已经释放,注意在异步中不能使用释放需要的资源
//using (FileStream fs = new FileStream(path, FileMode.Open))
//{
// Buffer = new byte[BufferSize];
// fs.BeginRead(Buffer, 0, BufferSize, AsyncReadCallback, fs);
//}
if (File.Exists(path))
{
FileStream fs = new FileStream(path, FileMode.Open);
fs.BeginRead(Buffer, 0, BufferSize, AsyncReadCallback, fs);
}
else
{
Console.WriteLine("该文件不存在");
}
}
/// <summary>
///
/// </summary>
/// <param name="ar"></param>
void AsyncReadCallback(IAsyncResult ar)
{
FileStream stream = ar.AsyncState as FileStream;
if (stream != null)
{
Thread.Sleep(1000);
//读取结束
stream.EndRead(ar);
stream.Close();
string output = System.Text.Encoding.UTF8.GetString(this.Buffer);
Console.WriteLine("读取的文件信息:{0}", output);
}
}
}
}
using System;
using System.Threading;
namespace AsynSample
{
class Program
{
static void Main(string[] args)
{
FileReader reader = new FileReader(1024);
//改为自己的文件路径
string path = "C:\\Windows\\DAI.log";
Console.WriteLine("开始读取文件了...");
//reader.SynsReadFile(path);
reader.AsynReadFile(path);
Console.WriteLine("我这里还有一大滩事呢.");
DoSomething();
Console.WriteLine("终于完事了,输入任意键,歇着!");
Console.ReadKey();
}
/// <summary>
///
/// </summary>
static void DoSomething()
{
Thread.Sleep(1000);
for (int i = 0; i < 10000; i++)
{
if (i % 888 == 0)
{
Console.WriteLine("888的倍数:{0}",i);
}
}
}
}
}
public delegate string MyFunc(int num, DateTime dt);
using System;
using System.Text;
namespace AsynSample
{
/// <summary>
/// 下载委托
/// </summary>
/// <param name="fileName"></param>
public delegate string AysnDownloadDelegate(string fileName);
/// <summary>
/// 通过委托实现异步调用
/// </summary>
class DownloadFile
{
/// <summary>
/// 同步下载
/// </summary>
/// <param name="fileName"></param>
public string Downloading(string fileName)
{
string filestr = string.Empty;
Console.WriteLine("下载事件开始执行");
System.Threading.Thread.Sleep(3000);
Random rand = new Random();
StringBuilder builder =new StringBuilder();
int num;
for(int i=0;i<100;i++)
{
num = rand.Next(1000);
builder.Append(i);
}
filestr = builder.ToString();
Console.WriteLine("下载事件执行结束");
return filestr;
}
/// <summary>
/// 异步下载
/// </summary>
public IAsyncResult BeginDownloading(string fileName)
{
string fileStr = string.Empty;
AysnDownloadDelegate downloadDelegate = new AysnDownloadDelegate(Downloading);
return downloadDelegate.BeginInvoke(fileName, Downloaded, downloadDelegate);
}
/// <summary>
/// 异步下载完成后事件
/// </summary>
/// <param name="result"></param>
private void Downloaded(IAsyncResult result)
{
AysnDownloadDelegate aysnDelegate = result.AsyncState as AysnDownloadDelegate;
if (aysnDelegate != null)
{
string fileStr = aysnDelegate.EndInvoke(result);
if (!string.IsNullOrEmpty(fileStr))
{
Console.WriteLine("下载文件:{0}", fileStr);
}
else
{
Console.WriteLine("下载数据为空!");
}
}
else
{
Console.WriteLine("下载数据为空!");
}
}
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有