using System;
using System.IO;
using System.Threading.Tasks;
namespace ThreadNTask
{
class Program
{
static void Main(string[] args)
{
if(args.Length < 2)
{
Console.WriteLine("Usage: AsyncFileIO <Source> <Destination>");
return;
}
DoCopy(args[0], args[1]);
Console.ReadLine();
}
static async Task<long> CopyAsync(string fromPath, string toPath)
{
using(var fromStream = new FileStream(fromPath, FileMode.Open))
{
long totalCopied = 0;
using(var toStream = new FileStream(toPath, FileMode.Create))
{
byte[] buffer = new byte[1024];
int nRead = 0;
while((nRead = await fromStream.ReadAsync(buffer, 0, buffer.Length)) != 0)
{
await toStream.WriteAsync(buffer, 0, nRead);
totalCopied += nRead;
}
}
return totalCopied;
}
}
static async void DoCopy(string fromPath, string toPath)
{
long totalCopied = await CopyAsync(fromPath, toPath);
Console.WriteLine($"Copied total {totalCopied} Bytes");
}
}
}
728x90
'C# > 책 예제' 카테고리의 다른 글
C# Task await 없이 Task타입을 단독으로 사용하는 예제 (0) | 2019.06.09 |
---|---|
C# Task 비동기 API WInform 예제 (0) | 2019.06.08 |
C# Task async 한정자와 await 연산자 사용하기. (0) | 2019.06.08 |
C# Task Parallel 클래스 사용하기. (0) | 2019.06.08 |
C# Task Task<TResult> 클래스 사용하기. (0) | 2019.06.08 |
댓글