質問: (MainWindow)Window.GetWindow(this); window.MethodA(); } } public partial class MainWindow : Window { internal void MethodA() { //処理。<=ここで別Threadである、とエラー。(1) } } } ``` ### 補足情報(言語/FW/ツール等のバージョンなど) Microsoft Visual Studio Community 2015 Version 14.0.25424.00 Update 3 Microsoft .NET Framework Version 4.6.01038 インストールしているバージョン:Community Visual C# 2015 00322-20000-00000-AA575 Microsoft Visual C# 2015 です。 よろしくお願いします。
回答: ディスパッチャ経由で UI スレッドに投げるというのはどうでしょうか。 ``` private void Watcher_Created(object sender, FileSystemEventArgs e) { Dispatcher.BeginInvoke((Action)(() => { var w = Window.GetWindow(this) as MainWindow; w.MethodA(); }), null); } ``` 本当は MyUserControl に ICommand を実装した依存関係プロパティを追加して MainWindow からそのプロパティにコマンドをバインドするようにしたほうがいいと思います。 いわゆる MVVM パターンになるわけですが、 そちらのほうもぜひご検討下さい。 詳しくは下記のサイトなどが参考になると思います。 YKSoftware: MVVM YKSoftware: tips - 独自の依存関係プロパティを作成する