【问题标题】:ActiveX in WebBrowser in WinForms crashing whole appWinForms中WebBrowser中的ActiveX使整个应用程序崩溃
【发布时间】:2011-07-27 13:56:22
【问题描述】:

我有一个 C# WinForms 应用程序,它有一个 WebBrowser 控件,它加载一个嵌入了第 3 方 ActiveX 对象的 html 页面,该对象可以播放 IPTV 视频。 Exterity 提供的 Active X。我也尝试过 VLC ActiveX 控件,它甚至更不可靠,具有相同的症状。 XP 和 Win7 上的行为相同。

整个 WinForms 应用程序会间歇性地退出。我已经处理了 ThreadException 和 UnhandledExcetion 事件:

[STAThread]
static void Main(string[] args)
{
    //set up global exception handling
    Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
    Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

这些事件在应用退出之前不会触发;相信我他们确实有效,因为他们已经使用了几年,并且已经多次触发其他错误(例如超时数据库连接)(此时我重新启动整个应用程序)!我在 Windows 事件视图中看不到任何条目。我的 exe 进程就消失了。

我一直在阅读 AppDomains,想知道是否可以将 WebBrowser 控件放在主程序/表单的单独控件中;任何建议表示赞赏。

或者还有其他我可以处理的方法,我认为是,一个异常一直未处理到顶部,此时进程退出。

【问题讨论】:

    标签: winforms exception-handling activex webbrowser-control


    【解决方案1】:

    试图捕捉和忽略访问冲突是引入内存损坏的秘诀,可能会损坏应用程序的数据或设置。您最好弄清楚 为什么 ActiveX 控件崩溃(例如,使用 WinDBG)并解决这个问题。

    【讨论】:

    • 如果我能发现访问冲突,我很乐意使用 Application.Restart() 重新启动整个应用程序。我希望这能让我在该会话中摆脱进一步的内存损坏;这可能会导致永久重启,但这比退出整个过程要好。 (为伟大的 fiddler2 干杯!)
    • 我已将 WinDBG 日志提供给 ActiveX 对象的开发人员,他们正在“调查”。 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多