获取 WPF 应用程序的 window 句柄时出现问题

Problem getting the window handle of WPF application

我目前正在努力获取我的 WPF 应用程序的 window 句柄。 这是 App.xaml.cs:

的代码片段
        _Logger.Info("Creating main window and view model.");

        MainWindow mainWindow = new MainWindow();

        _Logger.Info("MainWindow created");
        try
        {
            FrameworkAdjustments.WindowHandle = new WindowInteropHelper(mainWindow).EnsureHandle();
        }
        catch (Exception ex)
        {
            _Logger.Error("Could not ensure WindowHandle", ex);
        }

        _Logger.Info("WindowHandle created");
        //...
        var viewModel = new MainWindowViewModel();
        mainWindow.Initialize(viewModel);
        mainWindow.WindowState = WindowState.Maximized;

        mainWindow.Show();

在极少数情况下,应用程序会在 try 中停止。我得到日志 "Creating main window and view model." 和 "MainWindow created",但没有别的。既不是错误,也不是 "WindowHandle created".

如前所述,这在任何其他机器上都无法重现,除非是在一位特殊客户的机器上。我该如何解决这个问题? 我需要获取 window 句柄,以创建另一个必需的 class.

提前致谢

编辑 1: 添加了最后 5 行代码。

您应该创建 WindowInteropHelper 并在引发 SourceInitialized 事件后访问句柄:

MainWindow mainWindow = new MainWindow();
EventHandler eventHandler = null;
eventHandler = (ss, ee) =>
{
    mainWindow.SourceInitialized -= eventHandler;
    try
    {
        FrameworkAdjustments.WindowHandle = new WindowInteropHelper(mainWindow).EnsureHandle();
    }
    catch (Exception ex)
    {
        _Logger.Error("Could not ensure WindowHandle", ex);
    }
};
mainWindow.SourceInitialized += eventHandler;
...
mainWindow.Show();

大家好,感谢您的回复。我现在发现了这个问题并想告诉你,如果其他人遇到类似的问题。 .NET Framework 未正确安装。我已经卸载并重新安装,现在一切正常。