Я получаю исключение "Неверный межпоточный доступ".
Я занимаюсь разработкой приложения Silverlight. Проблема в том, что я создаю экземпляр объекта (COM + объект) в одном потоке и пытаюсь получить доступ из другого. Это необходимое поведение для моего приложения.
Итак, я полагаю, что мне нужно сказать, что взаимодействие с COM находится в режиме MTAThread, но я не вижу смысла делать это
Я знаю проблему, но не вижу решения.
Любая помощь?
Заранее спасибо
Пример кода:
using System.ComponentModel;
using System.Windows.Controls;
using System.Windows;
using System.Threading;
using System.Runtime.InteropServices.Automation;
using System;
namespace BackgroundWorkerTest
{
public partial class MainPage : UserControl
{
Thread backgroundThread;
dynamic _myspeech;
static readonly object locker = new object();
public MainPage()
{
InitializeComponent();
backgroundThread = new Thread(StartScanProcess);
backgroundThread.Start();
}
private void StartScanProcess(object sender, DoWorkEventArgs e)
{
StartScanProcess();
}
private void StartScanProcess()
{
lock (locker)
{
_myspeech = AutomationFactory.CreateObject("Sapi.SpVoice")
_myspeech.Volume = 100;
}
}
private void Button_Click(object sender, System.Windows.RoutedEventArgs e)
{
_myspeech.Speak(UIThreadId.Text);
}
}
}