2016년 8월 30일 화요일

c# Task async await example 2

private async void button1_Click(object sender, EventArgs e)
{

int result = await inttask();
label1.Text = result.ToString();
}

public async Task inttask()
{
Task temptak = new Task(method);
temptak.Start();
int output = await temptak;
return output;
}

int method()
{
Thread.Sleep(4000);
return 999;
}


4초동안 계산을 하는데, 윈폼은 활성화 되있는 상대고, 계산이 끝나면 라벨에 결과가 표시가 된다.

-> 다음은 마우스 클릭 이벤트를 계산이 끝나기 전에 눌렀을떄 어떻게 되나 보자.

private async void button1_Click(object sender, EventArgs e)
{
Console.WriteLine("event out");
int result = await inttask();
label1.Text = result.ToString();
Console.WriteLine("Txt change");
}

public async Task inttask()
{
Task temptak = new Task(method);
temptak.Start();
int output = await temptak;
return output;
}

int ttt = 100;
int method()
{
ttt = ttt * 2;
Thread.Sleep(4000);
return ttt;
}

보면 큐에 쌓인다.

5번 누르면 5번 결과가 바뀐다. 하지만 누른 시간차만큼 바뀌는데 시간이 걸림.

댓글 없음:

댓글 쓰기