在我的 WPF 应用程序中,我进行了一些异步通信(与服务器)。在回调函数中,我最终从服务器的结果创建 InkPresenter 对象。这要求正在运行的线程是 STA,而目前显然不是。因此我得到以下异常:
无法创建程序集中定义的“InkPresenter”实例 [..] 调用线程必须是 STA,因为许多 UI 组件都需要这个。
目前我的异步函数调用是这样的:
public void SearchForFooAsync(string searchString)
{
var caller = new Func<string, Foo>(_patientProxy.SearchForFoo);
caller.BeginInvoke(searchString, new AsyncCallback(SearchForFooCallbackMethod), null);
}
如何使回调(将创建 InkPresenter)成为 STA?或者在新的 STA 线程中调用 XamlReader 解析。
public void SearchForFooCallbackMethod(IAsyncResult ar)
{
var foo = GetFooFromAsyncResult(ar);
var inkPresenter = XamlReader.Parse(foo.Xaml) as InkPresenter; // <!-- Requires STA
[..]
}