取消按钮取消SpeakAsync方法没有响应

时间:2016-01-03 13:37:35

标签: c# winforms asynchronous speechsynthesizer

我有取消按钮取消语音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(),但它也没有帮助!

2 个答案:

答案 0 :(得分:0)

由于异步播放时它是一个不同的线程,你可能会丢失对读者对象的引用。

我建议您将reader声明为static属性,特别是如果您在其他事件中取消它。

答案 1 :(得分:0)

我发现在说出每个单词后调用的Speak_progress事件中,我将Focus方法称为控件。然后它经常从取消按钮转移焦点,无法执行点击!

希望这个答案对类似问题有用!