簡體   English   中英

C#停止按鈕發出嗶聲

[英]c# stop button for beep sound

我創建了一個使用蜂鳴控制台的簡單C#應用程序。 我想添加一個停止按鈕來停止蜂鳴,但是一旦應用開始運行,它不會讓我按下關閉/按鈕按鈕。 下面是我的代碼。

private void button1_Click(object sender, EventArgs e)
{
    int int1, int2, hours;

    int1 = int.Parse(txtbox1.Text);
    int2 = int.Parse(txtbox2.Text);

    hours = ((60 / int1) * int2);
    for (int i = 0; i <= hours; i++)
    {
        Console.Beep();
        Thread.Sleep(int1 * 60000);
    }
}

原因是您在GUI線程中執行button1_Click 當您調用此方法時,線程將在此處停留相當長的時間,因為您使其處於睡眠狀態。

如果刪除Thread.Sleep(int1*60000); 您會注意到您的應用程序在完成蜂鳴之前無響應。

您應該嘗試使用Timer代替。 這樣的事情應該可以工作(這基於Windows.Forms.Timer ):

private Timer timer = new Timer(); 

並設置

timer.Tick += OnTick;
timer.Interval = int1 * 60000;
...


private void OnTick(object o, EventArgs e)
{
   Console.Beep();     
}

在您的buttonclick中,您現在可以啟動和停止計時器:

timer.Start();

要么

timer.Stop(); 

在這種情況下,我將使用計時器,之所以無法關閉表單,是因為您根據我的理解在表單線程上調用了sleep。 在表單線程上調用sleep會給應用程序帶來崩潰的印象。

這是我用c#內置的快速示例代碼,它將在指定時間發出提示音。 希望對您有所幫助。

    private void button1_Click(object sender, EventArgs e)
    {

        timer1.Tick += new EventHandler(timer_dosomething);
        timer1.Interval = 60000;
        timer1.Enabled = true;
        timer1.Start();

    }

    private void button2_Click(object sender, EventArgs e)
    {
        timer1.Stop();
    }

    void timer_dosomething(object sender, EventArgs e)
    {
        Console.Beep();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM