我不时在生产机器上的应用程序启动时遇到问题。并非每次应用程序启动时都会发生这种情况,显然它只会在重新启动时发生。应用程序从登录开始,添加到 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run。
显然,重置机器时问题比重新启动时更频繁。应用程序崩溃后手动启动应用程序成功。
启动过程中会抛出以下异常:
'System.Windows.Controls.TextBlock' 的初始化引发了异常。System.Windows.Markup.XamlParseException:“System.Windows.Controls.TextBlock”的初始化引发了异常。---> System.InvalidOperationException:调用线程无法访问此对象,因为不同的线程拥有它。在 System.Windows.Threading.Dispatcher.VerifyAccess() 在 System.Windows.Style.Seal() 在 System.Windows.StyleHelper.UpdateStyleCache(FrameworkElement fe,FrameworkContentElement fce, Style oldStyle, Style newStyle, Style& styleCache) 在 System.Windows .FrameworkElement.OnStyleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 在 System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e) 在 System.Windows.FrameworkElement。 在 Exception.Occurs.At.Different.Origins.Between.Startup()
从 StackTrace 中可以看出,更新样式缓存时发生了一些事情。我无法在我自己的电脑上重现这个。启动应用程序时这里不涉及线程,但有几个 AppDomain。异常的来源并不总是相同的,但是从 Application.LoadComponent(Object component, Uri resourceLocator) 来看是完全一样的
因为我们的应用程序需要根据操作系统从与可执行文件 (..\ProgramData....) 不同的位置找到配置文件,所以我们使用单独的 AppDomain 来指示它在哪里查找配置文件,因为我们找不到更好的解决方案来告诉 ConfigurationManager 在哪里查找文件。当然,它可能与此有关,但不一定。编辑: ConfigurationManager.OpenMappedExeConfiguration 似乎不起作用,因为它不会刷新通过 Properties.Settings.Default 等访问的任何用户或应用程序设置。
有没有人对如何处理这个问题有任何建议或建议?抱歉,我无法为您提供重现的样本。