Task에 관련된 내용을 데모로 만들었습니다. | |
나의 폴더 > C# | 2013-02-05 (Tue) 19:21 | http://blog.dreamwiz.com/papasmf1/13929004 |
반응성과 멀티 쓰레드쪽에서 주로 나오는 코드들입니다.
Task에 관련된 데모들을 정리해 보았습니다. private void button1_Click(object sender, EventArgs e) { Task task1 = new Task(new Action(GetTheTime)); task1.Start(); //Anonymous Delegate를 사용하면 아래와 같다. Task task2 = new Task(delegate { Debug.WriteLine("현재 시간: {0}", DateTime.Now); }); task2.Start(); //Lamda 표현식을 사용한 경우 입력 =>(goes to) 출력 Task task3 = new Task(() => MyMethod()); task3.Start(); } private static void GetTheTime() { Debug.WriteLine("현재 시간은 {0}", DateTime.Now); } private static void MyMethod() { Debug.WriteLine("현재 시간은 {0}", DateTime.Now); } private static void LongRunningMethodA() { Thread.Sleep(3000); Debug.WriteLine("A 현재 시간은 {0}", DateTime.Now); } private static void LongRunningMethodB() { Thread.Sleep(2000); Debug.WriteLine("B 현재 시간은 {0}", DateTime.Now); } private static void LongRunningMethodC() { Thread.Sleep(5000); Debug.WriteLine("C 현재 시간은 {0}", DateTime.Now); } private void button2_Click(object sender, EventArgs e) { //다중의 태스크를 실행하고 결과 기다리기 Task[] tasks = new Task[3] { Task.Run( () => LongRunningMethodA()), Task.Run( () => LongRunningMethodB()), Task.Run( () => LongRunningMethodC()) }; //어느 태스크나 완료되면 바로 넘어간다. //Task.WaitAny(tasks); //모든 태스크가 완료되면 다음 단계로 넘어간다. Task.WaitAll(tasks); Debug.WriteLine("작업 종료"); } |
댓글 없음:
댓글 쓰기
참고: 블로그의 회원만 댓글을 작성할 수 있습니다.