実稼働マシンでのアプリケーションの起動時に問題が発生することがあります。アプリケーションが起動するたびに発生するわけではなく、明らかに再起動時にのみ発生します。アプリケーションはログインから開始され、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()at System.Windows.Style.Seal()at System.Windows.StyleHelper.UpdateStyleCache(FrameworkElement fe、FrameworkContentElement fce、Style oldStyle、Style newStyle、Style&styleCache)at System.Windows .FrameworkElement.OnStyleChanged(DependencyObject d、DependencyPropertyChangedEventArgs e)at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)atSystem.Windows.FrameworkElement。 at Exception.Occurs.At.Different.Origins.Between.Startup()
StackTraceからわかるように、スタイルキャッシュの更新中に何かが起こっています。私は自分のコンピューターでこれを再現することができませんでした。アプリケーションの起動中にここに関係するスレッドはありませんが、いくつかのAppDomainがあります。例外の発生源は常に同じではありませんが、Application.LoadComponent(Object component、Uri resourceLocator)からはまったく同じです。
アプリケーションは、OSに応じて実行可能ファイル(.. \ ProgramData ....)とは異なる場所から構成ファイルを見つける必要があるため、別のAppDomainを使用して、構成ファイルを探す場所を指示します。 ConfigurationManagerにファイルを探す場所を指示するより良い解決策を見つけることができませんでした。もちろん、これに関連している可能性がありますが、必ずしもそうとは限りません。編集:ConfigurationManager.OpenMappedExeConfigurationは、Properties.Settings.Defaultなどからアクセスしたユーザーまたはアプリケーションの設定を更新しないため、機能していないようです。
誰かがこれに対処する方法について何か提案や推奨事項がありますか?申し訳ありませんが、複製用のサンプルを提供することはできません。