첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ 태스크 병렬 실행하기

------------------------------------------------------------------------------------------------------------------------

using System;

using System.Collections.Generic;

using System.Threading;

using System.Threading.Tasks;

 

...

 

#region 테스트 처리하기 - Test(taskName, secondCount)

 

/// <summary>

/// 테스트 처리하기

/// </summary>

/// <param name="taskName">태스크명</param>

/// <param name="secondCount">초 카운트</param>

/// <returns>처리 결과</returns>

private int Test(string taskName, int secondCount)

{

    Console.WriteLine

    (

        "[{0} 스레드] 실행 태스크 : {1}, 스레드 풀 스레드 여부 : {2}",

        Thread.CurrentThread.ManagedThreadId,

        taskName,

        Thread.CurrentThread.IsThreadPoolThread

    );

 

    Thread.Sleep(TimeSpan.FromSeconds(secondCount));

 

    return secondCount;

}

 

#endregion

 

...

 

Task<int>   task1 = new Task<int>(() => Test("태스크 1", 3));

Task<int>   task2 = new Task<int>(() => Test("태스크 2", 2));

Task<int[]> task3 = Task.WhenAll(task1, task2);

 

task3.ContinueWith

(

    t => Console.WriteLine("첫번째 태스크 결과 : {0}, 두번째 태스크 결과 : {1}", t.Result[0], t.Result[1]),

    TaskContinuationOptions.OnlyOnRanToCompletion

);

 

task1.Start();

task2.Start();

 

Thread.Sleep(TimeSpan.FromSeconds(4));

 

Console.WriteLine();

Console.WriteLine();

Console.WriteLine();

 

List<Task<int>> taskList = new List<Task<int>>();

 

for(int i = 1; i < 4; i++)

{

    int count = i;

 

    Task<int> task = new Task<int>(() => Test(string.Format("태스크 {0}", count), count));

 

    taskList.Add(task);

 

    task.Start();

}

 

while(taskList.Count > 0)

{

    Task<int> completedTask = Task.WhenAny(taskList).Result;

 

    taskList.Remove(completedTask);

 

    Console.WriteLine("완료된 태스크 결과 : {0}.", completedTask.Result);

}

 

Thread.Sleep(TimeSpan.FromSeconds(1));

------------------------------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker

댓글을 달아 주세요