以下代码,其中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);
}
答案 0 :(得分:0)
SpeechSynthesizer将在使用Speak功能时保留程序。尝试使用SpeakAsync()
而不是Speak()
,或者如果您不希望tick中的函数阻止程序的UI,则可以启动运行tick的新线程。