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);
    }

Timer_Tick冻结程序

使用Speak功能时,语音合成器将保持程序。尝试使用SpeakAsync()代替Speak(),或者你可以启动一个新的线程来运行tick,如果你不希望tick中的函数阻塞程序的UI。