gpt4 book ai didi

WPF窗口在启动时崩溃,或者启动但挂起并且不呈现内容

转载 作者:行者123 更新时间:2023-12-04 09:36:58 30 4
gpt4 key购买 nike

WPF应用程序在某些客户端计算机上崩溃但在其他所有地方都无法正常工作时,我遇到了几个令人讨厌的问题-每个开发人员的噩梦。

我在此处发布问题/解决方案,以帮助保持开发人员的健康。这些都不容易解决。

这两个问题都是经典的“它可以在我的机器上工作,但不能在我的机器上工作”问题。

  • WPF应用程序在启动时崩溃。没有错误,也不知道为什么。
  • WPF应用程序启动,窗口边框显示,但内容未绘制。它只是挂起(报告为“透明窗口”)。单击关闭可触发崩溃报告(机器是Windows XP)。
  • 最佳答案

    1)WPF应用程序在启动时崩溃。没有错误,也不知道为什么。

    首先要真正发现错误的疑难解答步骤是在app.xaml中添加其他错误处理。

    在您的App.xaml header 中,添加:

    <Application DispatcherUnhandledException="App_DispatcherUnhandledException" />

    然后在您的App.xaml.cs中添加以下内容:
        void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs args)
    {
    log.Fatal("An unexpected application exception occurred", args.Exception);

    MessageBox.Show("An unexpected exception has occurred. Shutting down the application. Please check the log file for more details.");

    // Prevent default unhandled exception processing
    args.Handled = true;

    Environment.Exit(0);
    }

    添加此额外的调试后,我捕获了错误:

    System.TypeInitializationException:'System.Windows.Media.FontFamily'的类型初始值设定项引发了异常。 ---> System.ArgumentException:路径中的非法字符。

    进一步的研究,谷歌搜索和咖啡,导致了解决方案,即客户端计算机在注册表下的注册表中的字体条目中带有尾随的“◻”字符

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts

    删除这个流氓字符就解决了这个问题。

    请参阅节省职业的博客文章 "How to Crash every WPF application"

    2)WPF应用程序启动,显示窗口边框,但内容未绘制。它只是挂起(报告为“透明窗口”)

    这是另一个与字体有关的问题。最初,我将其简化为Window.xaml中的fontSize =“16”,无法在客户端站点的一台(只有一台)计算机上运行,​​好像WPF拒绝渲染其字体为16(?)。我删除了指定字体大小的代码,它起作用了……但是事实证明,它仅适用于我的登录配置文件。在同一台机器上,同事的登录配置文件继续失败。我可以直接以我自己的身份登录,成功运行,然后注销,他将以自己的身份登录,运行它,并且由于“透明的悬挂式窗口”而失败。同一台机器,相同的权限。

    作为最后的选择,我以他的身份登录,发现他为自己的 自定义主题设置了放大字体。我将Windows主题更改回经典主题...并解决了此问题(?!?)。此问题似乎也与字体有关,但是我没有确定绝对的根本原因。将主题更改回标准主题是一个临时解决方法。

    关于WPF窗口在启动时崩溃,或者启动但挂起并且不呈现内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9066930/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com