我有取消按钮取消语音syntehsizer的speakAsync方法。它通过PromptBuilder
调用,输出设置为波形文件,如
reader.SetOutputToWaveFile(CurAudioFile, fmt);
reader.SpeakAsync(PB);
取消它如下:
private buttonCancel_Click(...)
{
if (Utility.Warn("Are you sure you want to cancel reading the document aloud?") == System.Windows.Forms.DialogResult.Yes)
{
reader.SpeakAsyncCancelAll();
}
}
但问题是,当我点击取消按钮时,代码永远不会被执行!实际上它对按钮点击没有响应,它没有被执行!
我尝试在speak_progress中使用Application.DoEvents()
,但它也没有帮助!
答案 0 :(得分:0)
由于异步播放时它是一个不同的线程,你可能会丢失对读者对象的引用。
我建议您将reader
声明为static
属性,特别是如果您在其他事件中取消它。
答案 1 :(得分:0)
我发现在说出每个单词后调用的Speak_progress
事件中,我将Focus
方法称为控件。然后它经常从取消按钮转移焦点,无法执行点击!
希望这个答案对类似问题有用!