tesis sistemas sistema recomendacion hacer como c# windows-phone-8 text-to-speech

c# - sistemas - Cancelar síntesis de voz en Windows Phone 8



sistema de recomendacion tesis (1)

Como desea cancelar la operación asincrónica, puede usar la IAsyncAction devuelta por SpeakTextAsync lugar de usar SpeakTextAsync .

private SpeechSynthesizer synth = new SpeechSynthesizer(); private IAsyncAction task; private void ButtonCancelSpeech(object sender, EventArgs eventArgs) { try { //cancel the async task itself task.Cancel(); } catch (TaskCanceledException) { } } private void BtnSpeech_Click(object sender, EventArgs e) { IEnumerable<VoiceInformation> voices = from voice in InstalledVoices.All where voice.Language.Substring(0, 2).Equals(LanguageApp.GetLangage2Characters()) select voice; if (voices.ElementAt(0) != null) { // Set the voice as identified by the query. synth.SetVoice(voices.ElementAt(0)); task = synth.SpeakTextAsync(_place.Description); } }

Agrego una síntesis de voz a mi aplicación. Funciona, pero el problema es que no puedo cancelar el discurso ... Por ejemplo, cuando navego a otra página, el discurso continúa ... Por lo tanto, invoco el método CancelAll () para cancelar el discurso actual, pero se produce una excepción y no sé por qué ¿Sabes cuál es el problema?

La excepción

A first chance exception of type ''System.Threading.Tasks.TaskCanceledException'' occurred in mscorlib.ni.dll An exception of type ''System.Threading.Tasks.TaskCanceledException'' occurred in mscorlib.ni.dll and wasn''t handled before a managed/native boundary An exception of type ''System.Threading.Tasks.TaskCanceledException'' occurred in mscorlib.ni.dll and wasn''t handled before a managed/native boundary The program ''[2576] TaskHost.exe'' has exited with code -1 (0xffffffff).

Mi código:

private SpeechSynthesizer synth = new SpeechSynthesizer(); protected override void OnBackKeyPress(CancelEventArgs e) { //I tried to cancel also here but it''s the same exception... } //method called when I press a button Cancel private void ButtonCancelSpeech(object sender, EventArgs eventArgs) { try { synth.CancelAll(); } catch (TaskCanceledException) { //I arrive in this exception } } private async void BtnSpeech_Click(object sender, EventArgs e) { IEnumerable<VoiceInformation> voices = from voice in InstalledVoices.All where voice.Language.Substring(0, 2).Equals(LanguageApp.GetLangage2Characters()) select voice; if (voices.ElementAt(0) != null) { // Set the voice as identified by the query. synth.SetVoice(voices.ElementAt(0)); await synth.SpeakTextAsync(_place.Description); } }

Gracias