즐겁게 개발을...

개발보다 게임이 더 많이 올라오는 것 같은...

개발/C#

[2022.09] 비프 음을 Stop시킬 때까지 내게 하기

다물칸 2022. 9. 21. 17:35
728x90
반응형

보통 오류 발생할 때 비프음을 넣을 때까지 많은데 이번 팁은 지속적으로 어떤 행위를 하고 있는 중에 지속적으로 비프음을 발생시킬 때까지 있습니다. 이때 사용하는 팁을 공유합니다.

제가 원하는 것은 삐~~~~~~~~~~~~~~~~~~~~~~~~~익인데, 삐삐삐삐삐삐삐삐삐삐삐삐삐삐삐삐 형태로 나옵니다. 

 

Duration을 길게 잡으면 되는데 이럴 경우 Beep함수에서 빠져나올 수가 없네요. 기본 제공되는 Beep클래스를 직접 구현한다면 가능할 것도 같습니다. 이것은 좀더 찾아보고 추가하겠습니다. 

 

쓰레드 방식으로 구현한 다음 클래스를 추가합니다.

public class BeepSound
{
    private int _ToneHz;
    private int _gapMiliseconds;
    private bool _stop = false;

    public BeepSound(int TonHz, int gapMiliseconds)
    {
        if (TonHz <= 500) TonHz = 500;
        if (gapMiliseconds <= 100) gapMiliseconds = 100;

        _ToneHz = TonHz;
        _gapMiliseconds = gapMiliseconds;
    }

    public void Start()
    {
        while (!_stop)
        {
            Console.Beep(_ToneHz, _gapMiliseconds);
        }
    }

    public void Stop()
    {
        _stop = true;
    }
}

Console.beep 함수를 클래스 형태로 Start, Stop이 가능하도록 구현한 클래스 입니다. 

 

사용법은 다음과 같습니다. 

BeepSound beeper = new BeepSound(1000, 300);
Thread thread = new Thread(new ThreadStart(beeper.Start));
thread.Start();
Thread.Sleep(5000);
beeper.Stop();

1000Hz를 300ms마다 발생시키고, 5초 후에 종료하라는 구문입니다. 

이를 잘 응용하면 되겠죠? 

그럼 이만!!!

반응형