2016년 8월 30일 화요일

c# await 로 비동기 Example

public async void TempSaveGrabData(byte[] inputArr, int buffNum, int scanNum)
{
await TempSaveMethodTask(inputArr,buffNum,scanNum);
Console.WriteLine( "{0} Scan and {1} Buff is Save in C:", scanNum,buffNum);
}

public Task TempSaveMethodTask(byte[] inputArr, int buffNum, int scanNum)
{
Task tempSaveTask = new Task(() => TempSaveMethod(inputArr, buffNum, scanNum));
return tempSaveTask;
}

void TempSaveMethod(byte[] inputArr, int buffNum, int scanNum)
{
string path = "c:\\ImageTemp\\" + scanNum.ToString("D3") + "_" + buffNum.ToString("D3") + ".dat";
Stream outStream = new FileStream(path, FileMode.Create);
outStream.Write(inputArr, 0, inputArr.Length);
outStream.Dispose();
}


여기선 데이터를 받으면 데이터를 하드에 저장을 하는데, 이 저장을 하는 작업을 하는동안 메인 쓰레드가 안멈추길 바란다.
await 로 쓰는동안 제어권을 호출한 메소드에 다시 넘겨준다.

댓글 없음:

댓글 쓰기