我正在调用一个我想在后台线程上运行的方法:
Task.Run(() => CleanupLogs());
CleanupLogs
方法删除超过特定天数的日志文件。它在try / catch块中执行删除。如果存在异常,则会通过Window.ShowDialog
向用户显示例外情况。这样做安全吗?如果没有,有没有办法让Window.ShowDialog
在UI线程上运行?
答案 0 :(得分:1)
只要您没有获得STA模型异常,您就可以了。但是如果你需要显示一个窗口/对话框,请确保你有一个Dispatcher对象的引用,该对象在每个WPF FrameworkElement上都可用(因为它们从DispatcherObject
继承)以及主Application类
Application.Current.Dispatcher.BeginInvoke(
DispatcherPriority.Background,
new Action(() => Window.ShowDialog()));
有关详细信息,请参阅WPF Inside Out: Dispatcher。