2014년 11월 6일 목요일

Task에 관련된 내용을 데모로 만들었습니다.

Task에 관련된 내용을 데모로 만들었습니다.
 조회 : 63
나의 폴더 > C# | 2013-02-05 (Tue) 19:21http://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("작업 종료");
        }

댓글 없음:

댓글 쓰기

참고: 블로그의 회원만 댓글을 작성할 수 있습니다.

Xcode 26의 새로운 기능들

 애플의 AI준비에 대한 골든타임이 지나가고 있다는 말이 많이 들립니다. ㅎㅎ  애플의 그동안의 패쇄적인 환경을 생각하면 온디바이스AI나 LLM환경에서 다소 아쉬운 부분이 많이 있습니다. 다른 빅테크들과 전혀 다른 방향의 목소리를 내고 있어서 좀 우려...