Timer_Tick冻结程序

时间:2016-11-03 16:13:23

标签: c# timer

以下代码,其中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);
    }

1 个答案:

答案 0 :(得分:0)

SpeechSynthesizer将在使用Speak功能时保留程序。尝试使用SpeakAsync()而不是Speak(),或者如果您不希望tick中的函数阻止程序的UI,则可以启动运行tick的新线程。