Timer_Tick冻结程序
本文关键字:程序 冻结 Tick Timer | 更新日期: 2023-09-27 18:16:06
下面的代码中,timer_tick事件检查是否符合触发文本到语音和音频文件播放的条件。但是,当条件满足时,结果如预期的那样获得,但程序冻结。
也如何添加一个弹出消息框,当这些条件匹配。音频文件或演讲重复是可以的,但我不想在计时器滴答时反复打开消息框。
private void timer1_Tick(object sender, EventArgs e)
{
label_time1.Text = DateTime.Now.ToString("hh:mm:ss tt");
label6.Text = DateTime.Now.ToShortDateString();
if (((DateTime.Now.ToString("hh:mm tt") == (textBox_ordertostart.Text) && (DateTime.Now.ToShortDateString() == dateTimePicker2.Value.ToShortDateString()) && (checkBox_delivery.CheckState == 0) && (checkBox_pickup.CheckState != 0))))
{
comboBox_suburb.Enabled = false;
checkBox_delivery.Enabled = false;
mplayer = new SoundPlayer(WindowsFormsApplication17.Properties.Resources.good_morning);
mplayer.Play();
pbuilder.ClearContent();
pbuilder.AppendText("Pickup order time start now");
txt2speech.Speak(pbuilder);
pbuilder.AppendBreak(PromptBreak.Medium);
}
使用Speak功能时,语音合成器将保持程序。尝试使用SpeakAsync()
代替Speak()
,或者你可以启动一个新的线程来运行tick,如果你不希望tick中的函数阻塞程序的UI。