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("작업 종료");
        }

댓글 없음:

댓글 쓰기

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

요즘 새로운 과정을 기획하면서 react.js + next.js를 OpenAI API와 같이 사용하는 과정을 만들고 있습니다. ㅎㅎ

 오랜만에 웹 기술들을 공부하니 재미있네요. ㅎㅎ  쭉 파이썬 과정들을 운영하고 있었는데 좀 더 범위를 넓혀서 아이폰 앱 개발과정 with ChatGPT,  웹 프로그래밍 with ChatGPT, AI시대의 AI어시스턴트 활용하기와 같은 글을 쓰고, ...