В моем приложении WPF я делаю некоторую асинхронную связь (с сервером). В функции обратного вызова я в конечном итоге создаю объекты InkPresenter из результата с сервера. Это требует, чтобы работающий поток был STA, который, по-видимому, в настоящее время отсутствует. Поэтому я получаю следующее исключение:
Невозможно создать экземпляр "InkPresenter", определенный в сборке [..] Вызывающий поток должен быть STA, потому что для этого требуется множество компонентов пользовательского интерфейса.
В настоящее время мой вызов функции async выглядит следующим образом:
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
[..]
}