Der folgende Code, bei dem timer_tick-Ereignis nach einer Bedingung sucht, um eine Text-zu-Sprache- und Audiodateiwiedergabe auszulösen. Wenn die Bedingungen erfüllt sind, werden die Ergebnisse wie erwartet erhalten, das Programm bleibt jedoch stehen.Timer_Tick friert das Programm ein
Auch, wie ein Popup-Meldungsfeld hinzugefügt wird, wenn diese Bedingung übereinstimmt. Es ist in Ordnung, wenn Audiodatei oder Sprache wiederholt werden, aber ich möchte nicht wiederholt Nachrichtenfelder öffnen, wenn der Timer tickt.
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);
}
Verwenden Sie die [Speechsynthesizer Klasse] (https://msdn.microsoft.com/en-us/library/office/system.speech.synthesis.speechsynthesizer.aspx)? Wenn ja, versuche "SpeakAsync" anstelle von "Speak". – adv12
Großartig. Das funktioniert super, danke. Irgendeine Idee über eine Nachrichtenbox? –