コード例 #1
0
        private void OKButton_Click(object sender, RoutedEventArgs e)
        {
            //  UIスレッドからの普通の呼び出しなのでOK
            var d = new DrivedObject();

            d.DoSomething();
        }
コード例 #2
0
 private async void DispatcherButton_Click(object sender, RoutedEventArgs e)
 {
     //  UIスレッド以外だがDispatcher経由での呼び出しなのでOK
     var d = new DrivedObject();
     await Task.Run(async() =>
     {
         if (!d.CheckAccess())
         {
             await d.Dispatcher.InvokeAsync(() => d.DoSomething());  //    OK
         }
     });
 }
コード例 #3
0
        private async void NGButton_Click(object sender, RoutedEventArgs e)
        {
            //  UIスレッド以外からの呼び出しなので例外が発生
            var d = new DrivedObject();

            try
            {
                await Task.Run(() => d.DoSomething());
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
        }