私のWPFアプリケーションでは、(サーバーとの)非同期通信を行います。コールバック関数では、サーバーからの結果からInkPresenterオブジェクトを作成することになります。これには、実行中のスレッドがSTAである必要がありますが、現在はそうではないようです。したがって、次の例外が発生します。
アセンブリで定義された「InkPresenter」のインスタンスを作成できません[..]多くのUIコンポーネントがこれを必要とするため、呼び出し元のスレッドはSTAである必要があります。
現在、私の非同期関数呼び出しは次のようになっています。
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
[..]
}