Система.UnauthorizedAccessException с преобразованием текста в речь в Windows Phone 8
У меня есть следующий фрагмент кода для использования функции преобразования текста в речь в Windows Phone 8. Я использую ssml, с закладками. Но при изменении любого элемента пользовательского интерфейса в закладке событие, вызванное функцией, вызывает несанкционированное исключение.
private void Initialise_synthesizer()
{
this.synthesizer = new SpeechSynthesizer();
synthesizer.BookmarkReached += new TypedEventHandler<SpeechSynthesizer, SpeechBookmarkReachedEventArgs>
(BookmarkReached);
}
void BookmarkReached(object sender, SpeechBookmarkReachedEventArgs e)
{
Debugger.Log(1, "Info", e.Bookmark + " mark reachedn");
switch (e.Bookmark)
{
case "START":
cur = start;
break;
case "LINE_BREAK":
cur++;
break;
}
**error here** t1.Text = cur.ToString();
}
Но при запуске он выдает следующую ошибку
A first chance exception of type 'System.UnauthorizedAccessException' occurred in System.Windows.ni.dll
An exception of type 'System.UnauthorizedAccessException' occurred in System.Windows.ni.dll and wasn't handled before a managed/native boundary
Invalid cross-thread access.
Любая идея, как исправить эту ошибку, или любая работа вокруг.
3 ответа:
Только что получил ответ.
Поскольку
synthesizer.SpeakSsmlAsync()
является асинхронной функцией, для выполнения операций пользовательского интерфейса должен использоваться Диспетчер, что-то вроде этого -Dispatcher.BeginInvoke(() => t1.Text = cur.ToString());