在我的WPF應用程序中,我做了一些異步通信(與服務器)。在回調函數中,我最終從服務器的結果創建InkPresenter對象。這要求正在運行的線程是STA,顯然它現在不是。因此,我得到以下例外:如何在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
[..]
}
無論發生在方法之前的[STAThread]嗎?並不總是合適但很容易。也許它直到2011年纔出來?我從2011年起就沒有用過它,我記得... – ebyrob 2017-07-06 03:41:38