[C#] - 비동기 처리 : task
C#2019. 4. 9. 09:57
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
○ 비동기 처리 : task |
|||
- 비동기 처리 : task C# 4.0 이후부터 Task 클래스를 사용하여, 쓰레드를 쉽게 생성하고 관리할 수 있다 Task 클래스를 사용하여 객체를 선언하고 Start 함수로 테스크를 실행 Wait 함수로 해당 테스크가 종료될 때까지 해당 코드에서 대기한다
Task는 순서없이 실행되며, 가장 딜레이가 짧은 것부터 종료된다 Wait 함수를 사용했으므로 5초간 task3에서 task3이 동작 종료될때까지 멈추며, task3이 종료 시 task4가 실행되며 종료된다 |
- Task 생성없이 TaskFactory 타입의 StartNew() 사용
1 2 3 4 5 6 7 8 9 10 | Task.Factory.StartNew(() => { Console.WriteLine("Factory 이용 Task 객체 생성필요 없이"); }); Task.Factory.StartNew( (obj) => { Console.WriteLine("Factory 이용 Task 객체 생성필요 없이(obj)"); }, null); | cs |
- Task<TResult> 타입 : 값을 반환
1 2 3 4 5 6 7 8 9 | Task<int> taskInt = new Task<int>( () => { Random rand = new Random((int)DateTime.Now.Ticks); return rand.Next(); }); taskInt.Start(); taskInt.Wait(); Console.WriteLine("무작위 숫자 값 : " + taskInt.Result); | cs |
- Task<TResult> 타입 TaskFactory 타입의 StartNew() 사용
1 2 | Task<int> taskInt2 = Task.Factory.StartNew<int>(() => 1); Console.WriteLine(taskInt2.Result); | cs |
-
- Task.Run 사용
1 2 3 4 5 6 7 8 9 10 11 12 13 | static void Main(string[] args) { ShowThreadInfo("Application"); Task t = Task.Run(() => ShowThreadInfo("Task")); t.Wait(); } static void ShowThreadInfo(String s) { Console.WriteLine("{0} Thread ID: {1}", s, Thread.CurrentThread.ManagedThreadId); } | cs |
'C#' 카테고리의 다른 글
[C#] - 제너릭 : <T> (0) | 2019.04.09 |
---|---|
[C#] - 비동기 처리 : async 메소드가 아닌 경우 비동기 처리 (0) | 2019.04.09 |
[C#] - 비동기 처리 : async 와 await (0) | 2019.04.09 |
[C#] - 이벤트(event), 이벤트 핸들러(EventHandler) (0) | 2019.04.08 |
[C#] - 델리게이트(delegate), 멀티캐스트 델리게이트 (0) | 2019.04.08 |
댓글()