こんにちは。
Windows10でWPFのアプリケーションを開発しています。
Visual Studio 2015 Communityを使っています。
###前提・実現したいこと
重たい処理の時にProgressBarを表示したいです。
###試したこと
xamlでprogressbarを配置し、ボタンの処理にvisible/hidden処理を追加、重たい処理をawait Task.Runで囲みました。
await Task.Run(() =>
{
});
を外せば問題なく動作します。
public static Window CreateView<T>(T viewModel) public static bool? ShowModalWindow<T>(T viewModel) private async void outputExamResultAsync()
をすべて [STAThread]
にしても、同じエラーです。
###発生している問題・エラーメッセージ
型 'System.Reflection.TargetInvocationException' のハンドルされていない例外が mscorlib.dll で発生しました
{"呼び出しスレッドは、多数の UI コンポーネントが必要としているため、STA である必要があります。"}
###該当のソースコード
xaml
1 <Border Width="300" Height="100" HorizontalAlignment="Center" VerticalAlignment="Center" Background="LightGray" Visibility="{Binding IndicatorVisibility}"> 2 <Grid> 3 <ProgressBar IsIndeterminate="True"/> 4 </Grid> 5 </Border>
C#
1 private Visibility indicatorVisibility = Visibility.Hidden; 2 public Visibility IndicatorVisibility 3 { 4 get { return indicatorVisibility; } 5 set 6 { 7 indicatorVisibility = value; 8 RaisePropertyChanged("IndicatorVisibility"); 9 } 10 }
C#
1 private async void outputExamResultAsync() 2 { 3 IndicatorVisibility = Visibility.Visible; 4 5 await Task.Run(() => 6 { 7 ResultWindowViewModel resultWindowViewModel = new ResultWindowViewModel(); 8 resultWindowViewModel.重たい処理(); 9 LocatorClass.ShowModalWindow(resultWindowViewModel); 10 }); 11 12 IndicatorVisibility = Visibility.Hidden; 13 }
C#
1LocatorClass 2 public static bool? ShowModalWindow<T>(T viewModel) 3 { 4 var window = CreateView(viewModel); 5 if (window == null) 6 { 7 return null; 8 } 9 10 Application.Current.MainWindow.IsEnabled = false; 11 12 window.Owner = Application.Current.MainWindow; 13 window.WindowStartupLocation = WindowStartupLocation.CenterOwner; 14 var result = window.ShowDialog(); 15 16 Application.Current.MainWindow.IsEnabled = true; 17 return result; 18 } 19 20 public static Window CreateView<T>(T viewModel) 21 { 22 // View を生成し、DataContext に ViewModel を設定する 23 Type viewType = ViewModels[viewModel.GetType()]; 24 Window window = Activator.CreateInstance(viewType) as Window; //<=この行でエラー。 25 return window; 26 } 27 28 29
###補足情報(言語/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
です。
よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/14 04:05
2017/06/14 05:58
2017/06/14 07:39