[英]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.