私はWPFで作業しています。Dispatcher を使用して、メインの xaml ウィンドウでスレッド プロセスを実行します。
次に、別の WPF を開いて 3D 画像を表示した結果を表示すると、次のエラーが発生しました。
{"多くの UI コンポーネントがこれを必要とするため、呼び出しスレッドは STA でなければなりません。"}
これは、新しいウィンドウを開始する方法です。
void DisplayFormThread()
{
IResult result = _mainWindow.GetResult();
ResultView resultView = new ResultView (result);
resultView.Show();
}
これをstackoverflowのいくつかの投稿に追加して問題を解決しようとしましたが、役に立ちません:
ThreadStart start = delegate()
{
DispatcherOperation op = Dispatcher.CurrentDispatcher.BeginInvoke(
new delegateNewWindow(DisplayFormThread), DispatcherPriority.Background);
DispatcherOperationStatus status = op.Status;
while (status != DispatcherOperationStatus.Completed)
{
status = op.Wait(TimeSpan.FromMilliseconds(1000));
if (status == DispatcherOperationStatus.Aborted)
{
// Alert Someone
}
}
};
// Create the thread and kick it started!
Thread thread = new Thread(start);
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
どうすれば問題を解決できますか?
前もって感謝します。