呼び出しスレッドは、多数の UI コンポーネントが必要としているため、STA である必要があります。

WPFのWindowから特定のイベントを受け付け、別プロジェクトのWindowを表示しようとしたときにこのExceptionが発生した。

private void ViewHandler(object sender, NotifyEventArgs e)
{
    MainWindow window_ = null;
    try
    {
        window_ = new MainWindow();
    }
    catch (Exception ex) // 呼び出しスレッドは、多数の UI コンポーネントが必要としているため、STA である必要があります。
    {
        logger.Error("Something wrong happened.", ex);
    }
}

イベント処理の結果実行されるメソッドがMain Threadで動作していなかったので、STAスレッドになっていなかったことが原因。

var th= new Thread(new ThreadStart(threadMethod));
th.SetApartmentState(ApartmentState.STA);
th.Start();

で、STAスレッドが作れると書いてあったので試してみたけど、途中で

このオブジェクトは別のスレッドに所有されているため、呼び出しスレッドはこのオブジェクトにアクセスできません。

が発生。呼び出し元のWindowの操作を行っているようなので呼び出し元のWindowの参照コストラクタで渡して 処理をそのWindowのスレッド内でDispatchするように書き直したら動いた。

    window.Dispatcher.Invoke(() =>
    {
        Notify()
    });