You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用MessageBox.Show致Blazor Hybrid调试时崩溃问题咨询

WPF Blazor Hybrid中调用WinForms消息框/模态窗体调试时崩溃问题

问题描述

使用System.Windows.Forms.MessageBox.Show打开消息框的WPF Blazor Hybrid应用,数秒后会崩溃。打开模态窗体时也会出现相同情况。
仅在使用Visual Studio调试器运行时会崩溃,不调试运行则不会崩溃。

Visual Studio调试输出

调试输出显示:

'WpfBlazorHybridMessageBoxTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\8.0.8\System.Windows.Forms.dll'. Symbols loaded.
'WpfBlazorHybridMessageBoxTest.exe' (CoreCLR: clrhost): Loaded 'C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App\8.0.8\System.Windows.Forms.Primitives.dll'. 
The thread '.NET TP Worker' (25888) has exited with code 0 (0x0).
The thread '.NET TP Worker' (45744) has exited with code 0 (0x0).
The thread '.NET TP Worker' (57576) has exited with code 0 (0x0).
The thread '.NET TP Worker' (22500) has exited with code 0 (0x0).
The program '[24472] WpfBlazorHybridMessageBoxTest.exe: Program Trace' has exited with code 0 (0x0).
The program '[24472] WpfBlazorHybridMessageBoxTest.exe' has exited with code 2147483651 (0x80000003).

退出代码0x80000003似乎与断点相关,但不确定。

事件查看器信息

事件查看器记录:

Faulting application name: WpfBlazorHybridMessageBoxTest.exe, version: 1.0.0.0, time stamp: 0x66960000
Faulting module name: EmbeddedBrowserWebView.dll, version: 129.0.2792.65, time stamp: 0x66f49609
Exception code: 0x80000003
Fault offset: 0x00000000003a84fd
Faulting process id: 0x0x5F98
Faulting application start time: 0x0x1DB141109AE3F08
Faulting application path: F:\Test\WpfBlazorHybridMessageBoxTest\bin\Debug\net8.0-windows\WpfBlazorHybridMessageBoxTest.exe
Faulting module path: C:\Program Files (x86)\Microsoft\EdgeWebView\Application\129.0.2792.65\EBWebView\x64\EmbeddedBrowserWebView.dll
Report Id: bddefc72-2dec-40a6-8240-aebac0069299
Faulting package full name: 
Faulting package-relative application ID: 

同时存在两条Windows错误报告条目。

重现步骤

  • 按官方流程创建WPF Blazor Hybrid应用
  • 在.csproj文件中添加属性启用WinForms支持:<UseWindowsForms>true</UseWindowsForms>
  • 在App.xaml.cs中显式指定命名空间解决Application歧义:public partial class App : System.Windows.Application
  • 在Counter.razor中添加消息框调用:
    {
        currentCount++;
        System.Windows.Forms.MessageBox.Show("Counter increased");
    }
    
  • 在Counter.razor中添加模态窗体调用:
    {
        currentCount++;
        var f = new System.Windows.Forms.Form();
        f.ShowDialog();
    }
    

背景说明

我们有一个运行在.NET Framework 4.7.2上的大型WPF应用,原本使用IE浏览器控件渲染UI,所有浏览器事件处理、客户端逻辑都运行在.NET Framework中,是自行开发多年的IE与.NET混合架构应用,和Blazor Hybrid模式类似。现在计划迁移到Blazor Hybrid,但修改所有现有MessageBox调用及第三方模态窗体工作量极大,希望保留原有代码不变。

内容的提问来源于stack exchange,提问作者Edwin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 16:25:53