본문 바로가기
C#

C# 멀티스레드로 다른 작업중에도 별도 작업하기

by 일용직 코딩노동자 2020. 10. 15.
728x90
반응형

C#에서 Thread.Sleep를 사용하면 메인스레드가 멈추기때문에 해당 딜레이만큼은 움직이지 않고 묶여있습니다.

 

하지만 별도의 스레드로 돌린다면 메인스레드는 작업을 계속 진행하고 별도로 다른 스레드에서 작업을 처리할수있습니다.

using System.Threading;
using System.Threading.Tasks;

private static Task<int> Alarm_Start()
{
	return Task.Factory.StartNew() =>
    {
    	for(int i=0; i<3; i++)
        {
        	SoundPlayer alarm = new SoundPlay(프로젝트명.Properties.Resources.Alarm09);
            alaram.Play();
            Thread.Sleep(2500);
        }
        return 1;
    });
}

해당 예제는 알람을 재생시키는 SoundPlayer예제입니다.

 

근데 자세히 보시면 for문으로 3번 반복을 하는데 알람파일을 한번 재생하고 2.5초의 딜레이가 있습니다.

 

이과정을 3번 반복하는데요.

 

만약 이 과정을 별도의 스레드로 돌리지않았다면 2.5초 + 알람 재생시간 동안은 다른 프로그램은 전혀 동작하지않습니다.

 

이렇게 하면 알람이 울리면서도 다른 작업은 별도로 돌아가고 있는게 가능합니다.

 

사용법은 간단합니다.

 

해당 예제처럼 코딩을 하신다음에 retrun안에 내용만 원하시는 작업으로 바꿔주시면 됩니다.

 

사용하실땐 원하시는 부분에서

 

Alarm_Start();

그냥 이렇게 함수명만 적어주시면 끝입니다.

728x90
반응형

댓글