In meiner WPF-Anwendung mache ich einige asynchrone Kommunikation (mit Server). In der Callback-Funktion erzeuge ich am Ende InkPresenter-Objekte aus dem Ergebnis vom Server. Dies erfordert, dass der laufende Thread STA sein, die anscheinend ist es derzeit nicht. Daher erhalte ich die folgende Ausnahme:
Cannot create instance of 'InkPresenter' defined in assembly [ ] Der aufrufende Thread muss STA sein, da viele UI-Komponenten dies erfordern.
Derzeit ist mein asynchroner Funktionsaufruf wie folgt:
public void SearchForFooAsync(string searchString)
{
var caller = new Func<string, Foo>(_patientProxy.SearchForFoo);
caller.BeginInvoke(searchString, new AsyncCallback(SearchForFooCallbackMethod), null);
}
Wie kann ich den Callback - der die InkPresenter-Erstellung vornimmt - zu STA machen? Oder das XamlReader-Parsing in einem neuen STA-Thread aufrufen.
public void SearchForFooCallbackMethod(IAsyncResult ar)
{
var foo = GetFooFromAsyncResult(ar);
var inkPresenter = XamlReader.Parse(foo.Xaml) as InkPresenter; // <!-- Requires STA
[..]
}