В моем приложении WPF я выполняю асинхронную связь (с сервером). В функции обратного вызова я в итоге создаю объекты InkPresenter из результата с сервера. Для этого требуется, чтобы запущенный поток был STA, чего, по-видимому, в настоящее время нет. Поэтому я получаю следующее исключение:
Невозможно создать экземпляр InkPresenter, определенный в сборке [..] Вызывающим потоком должен быть STA, поскольку это требуется для многих компонентов пользовательского интерфейса.
В настоящее время мой вызов асинхронной функции выглядит так:
public void SearchForFooAsync(string searchString)
{
var caller = new Func<string, Foo>(_patientProxy.SearchForFoo);
caller.BeginInvoke(searchString, new AsyncCallback(SearchForFooCallbackMethod), null);
}
Как я могу сделать обратный вызов - который будет создавать InkPresenter - STA? Или вызовите разбор XamlReader в новом потоке STA.
public void SearchForFooCallbackMethod(IAsyncResult ar)
{
var foo = GetFooFromAsyncResult(ar);
var inkPresenter = XamlReader.Parse(foo.Xaml) as InkPresenter; // <!-- Requires STA
[..]
}