OnIdle 事件中的异常不会冒泡

2024-05-02

在我的主窗体上,我订阅了两个事件:Application.ThreadException 和 Application.Idle。理论上,任何未捕获的异常都应该冒泡到主窗体。但是,如果异常发生在 OnIdle 事件中,则此方法不起作用。系统就崩溃了。有谁知道如何解决这个问题?非常感谢。


我同意不获取 ThreadException 事件并不是很合乎逻辑。然而它确实以这种方式工作,仅当消息循环调度事件并且事件处理程序中存在未处理的异常时才会引发 ThreadException。当存在时,会引发空闲事件没有消息如果要再发送,它会遵循完全不同的代码路径。

您可以通过自己在 Idle 事件处理程序中捕获异常来解决此问题:

    void Application_Idle(object sender, EventArgs e) {
        try {
            // Do stuff
        }
        catch (Exception ex) {
            Application.OnThreadException(ex);
        }
    }

请注意,如果您让用户决定是退出还是继续程序,那么 ThreadException 是一件喜忧参半的事情。另请注意,它不够通用,无法捕获all如果程序中出现异常,您仍然需要 AppDomain.CurrentDomain.UnhandledException 来处理 UI 线程以外的线程中引发的异常或消息循环开始运行之前引发的异常。

如果您这样做是为了确保用户可以not单击“继续”,然后只需使用 Application.SetUnhandledExceptionMode() 完全禁用 ThreadException 事件。现在一切都通过 AppDomain.UnhandledException 进行。这是更好的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OnIdle 事件中的异常不会冒泡 的相关文章

  • 可以让 ReSharper 在 Intellisense 中显示异常吗?

    我很喜欢 ReSharper 提供的重写智能感知行为 但是 我似乎无法让它显示异常 任何带有
  • 使用 .NET WebClient 模拟 XmlHttpRequest

    据我所知XmlHttpRequest我只需使用以下命令即可下载和上传数据send方法 但WebClient有很多方法 我不想要一个的所有功能WebClient 我只想创建一个模拟的对象XmlHttpRequest 但它没有 XSS 限制 我
  • WinForm面板滚动没有滚动条?

    我正在创建一个基本上是一个面板的用户控件 内部有随机内容 并且我需要能够使用按钮 向上和向下 而不是滚动条来上下滚动该面板 我必须这样做的原因是因为该程序将在触摸屏显示器上使用 我们需要大按钮而不是丑陋的小滚动条 我一直在摆弄 Vertic
  • 对 .NET Windows 安装程序应用程序执行注册表搜索

    我有一个 NET winform 安装程序应用程序 在安装之前 我会进行注册表搜索以检查计算机上是否安装了 MS Access Runtime 搜索目标机器 搜索目标机器的属性 启动条件 启动条件的属性 但是我想避免对路径进行硬编码 例如
  • 数据绑定问题,请解释

    public partial class Form1 Form MyClass myClass new MyClass one two public Form1 InitializeComponent textBox1 DataBindin
  • 是否有在 Windows 窗体应用程序中以最少的设置使用 CefGlue 或 CefSharp 的示例?

    我 仍然 使用 Visual Studio 2005 并希望将 webkit 浏览器嵌入到 c winforms 应用程序中 最好作为 winforms 控件 我正在寻找 CefGlue 或 CefSharp 的简单示例以及所需的最少 dl
  • 您是否必须在 VB.NET 中显式创建表单实例? [复制]

    这个问题在这里已经有答案了 如果一个项目包含Form类 形式可以通过以下方式显示 Form1 Show 或者是否需要首先创建表单的实例 Dim frm As New Form1 frm Show 正如所建议的 使用表单名称使用默认实例 而第
  • 如何将 DataGridViewLinkColumn 属性添加到 DataGridView 中动态生成的列?

    发展于 c winforms没有任何数据库连接 描述 在我的 DataGridView 中 列是动态生成的 在某些时候 某些列需要 DataGridViewLinkColumn 属性 我尝试了很多方法 但没有实现这一点 我希望这里有人能帮助
  • 如何选择一个按钮作为表单的默认按钮

    我有一个表单 它接受用户输入 然后让用户连接到 SQL Server This is happening on Button Click But where can I set the property Default button so
  • OWIN / Katana 未处理的异常全局处理程序?

    在 Katana OWIN 实现中实现全局异常捕获器处理程序的正确方法是什么 在作为 Azure 云服务 辅助角色 运行的自托管 OWIN Katana 实现中 我将此代码放置在中间件中 throw new Exception pooo 然
  • DatagridView 不显示错误图标或错误文本?

    我有一个带有 datagridview 的 win 表单 c 我将网格的数据源设置为数据表 用户想要检查数据表中的某些数据是否存在于另一个源中 因此我们循环遍历该表 将行与另一个源进行比较 并将数据表上的 rowerror 设置为一条短消息
  • 在 C# 中为父窗体中的子窗体控件添加事件处理程序

    我有两种形式 一种是带有按钮和文本框的父表单 单击该按钮时 将打开一个对话框 该子窗体又包含一个文本框和一个按钮 现在我想要的是 每当子表单文本框中的文本更改时 父表单文本框中的文本会自动更改 为了获得这个 我所做的是 Form3 f3 n
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • FOSRestBundle:显示我的自定义异常消息

    我试图在 FOSRestBundle 中添加异常的自定义控制 但它似乎忽略了我的自定义消息 响应的状态代码正常 I have throw new HttpException 404 User id not found 但得到这个 json
  • android 中的 lang.NumberFormatException

    我有以下代码 除了在后台线程中从数据库读取一些值并使用这些值之外什么也不做 我使用 jar 绘制折线图 对于我用于每个数组值的折线图 问题是第三个我传递给绘制 LineChart 的构造函数的参数是 float float viteza S
  • 多选DataGridView没有CTRL键没有闪烁?

    我在表单 Form1 vb 上有一个 DataGridView 控件 需要允许用户在不使用 CTRL 键的情况下多选行 没有可用的键盘 他们使用触摸屏 我已启用 mutliselect 属性 并在 Form 类中包含以下代码 我的 Data
  • PDO fetch() 失败时会抛出异常吗?

    有没有方法PDO语句 fetch http php net manual en pdostatement fetch php如果 PDO 错误报告系统设置为抛出异常 则在失败时抛出异常 例如 如果我设置 PDO ATTR ERRMODE g
  • 从异常中提取类和文件名

    是否可以从异常对象中提取类名和文件名 我希望将更好的日志记录集成到我的应用程序中 并且我想包含异常发生位置的详细信息 在 MVC 中 Stacktrace 不返回文件名和类名 我有点不知道在哪里寻找它们 Thanks 您可以创建一个Stac
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz

随机推荐

  • Spark 2.0:4 行。 IllegalArgumentException:界限必须为正

    我正在 Amazon EMR 5 0 上的 Spark 2 0 上尝试一个超级简单的测试程序 from pyspark sql types import Row from pyspark sql types import import py
  • XML 中的 标签导致 Android 崩溃

    我有一个带有渐变组件的图标
  • 我的负载均衡器目标组显示为“不可用” - 如何进一步调试?

    我创建了一个网络负载均衡器和一个目标组 然后我尝试为负载均衡器创建一个侦听器 但目标组在下拉菜单中显示为 不可用 我下一步可以做什么来调试这个 非常感谢您的帮助 图片 https ibin co w800 3vKxtcYYs3mg jpg
  • 在 Hadoop 中按文件中的值排序

    我有一个文件 其中每行包含一个字符串 然后是一个空格 然后是一个数字 例子 Line1 Word 2 Line2 Word1 8 Line3 Word2 1 我需要按降序对数字进行排序 然后将结果放入文件中 为数字分配排名 所以我的输出应该
  • Laravel 查询生成器 - 高级条件子句(可选参数)

    我需要带有接受可选参数的查询生成器的子句 例如 请考虑以下情况 我们有三个搜索字段 产品标题 公司名称和位置 邮政编码 城市或州 2 3 8 种可能性 该位置与 OR 连接 WHERE location postal code LIKE O
  • 如何打开 matlab p 代码文件

    有谁知道如何查看 matlab p 代码文件的代码 p 代码文件专门存在 以便您可以共享代码 以便其他人无法查看它 换句话说 您看不到 Matlab p 代码文件的代码
  • 如何在 github 中拉取请求时忽略或排除文件

    我们有 4 个分支 1 dev 2 qa 3 staging 4 master 我们要更新并添加1 dev中的CODEOWNERS文件中的一些人 2 qa到4 master的CODEOWNER文件将被保留 因为 1 dev 有 4 个审稿人
  • Cytoscape.js 强制导向布局和节点放置

    我最近发现了 Cytoscape js 并想尝试一下力导向布局 arbor 和 springy 现在 我有几个问题 是否可以通过使用其中一种布局来实现图 其中节点放置基于某种算法并且不需要节点坐标 例如 在 VivaGraphJS 中 图会
  • 什么是合约(如 C++17 的建议)?

    我读到了有关合同的内容关于 C 17 的思考 http www open std org jtc1 sc22 wg21 docs papers 2015 n4492 pdf由 B Stroustrup 撰写 并协助进行了一次小型演讲 讨论了
  • CoreData 多对多添加错误

    不确定我在这里做错了什么 School has a to many to Student and Student has its inverse 一点测试代码如下 class Student interface School NSManag
  • 具有自定义背景的 android textInputEditText 无法正常工作

    我在 textInputLayout 中使用 textInputEditText 我必须为我的 editText 设置背景才能为我的 editText 实现边框视图 但是当我在 textInputLayout 上调用 setError 时
  • 如何在 Android Studio 中为目标添加系统映像

    我有一个选项呈灰色 我必须完成该选项才能推进项目 它说 No system images installed for this target 这个答案适用于 Eclipse 但我不确定是否有 Android Studio 的等效项 无法创建
  • 在 Java 8 中,如何使用 lambda 将 Map 转换为另一个 Map

    我刚刚开始研究 Java 8 并尝试 lambda 我想我应该尝试重写我最近写的一个非常简单的东西 我需要将字符串到列的映射转换为另一个字符串到列的映射 其中新映射中的列是第一个映射中的列的防御副本 列有一个复制构造函数 到目前为止我最接近
  • 如何查明我的 Mac 上安装了哪些 Python 库?

    我刚刚开始使用 Python 发现我可以导入各种库 如何找出我的 Mac 上存在哪些可以导入的库 我如何找出它们包含哪些功能 我似乎记得使用一些网络服务器类型的东西来浏览本地帮助文件 但我可能已经想象到了 从 Python REPL 命令行
  • ProviderManifestToken 2008 或 2012

    应用程序 NET 4 5 C 使用 EF6 和数据库优先方法 支持 SQL Server 2008R2 2012 和 2014 这个问题是关于ProviderManifestToken自动生成的 edmx 文件的属性 根据使用哪个版本的数据
  • org.hibernate.AssertionFailure:例如无法执行取消删除

    当我尝试在一些删除操作后进行读取时 我收到此休眠断言错误 我找不到任何有关此 无法执行取消删除 错误的信息 除了源代码 https github com hibernate hibernate orm blob master hiberna
  • git:显示所有已修改的文件 - 已暂存和未暂存

    我需要一个命令给我所有修改过的文件 这包括暂存 即新添加的文件 和非暂存更改 在普通列表我可以在脚本中使用它 虽然这个问题可能听起来很熟悉 但我只找到接近我想要做的命令 git ls files m 列出 非分阶段 修改但忽略了上演的和新的
  • 在 Ionic/Cordova 中接收 URL

    我正在尝试设置一种从另一个应用程序接收网址的方法 就像 您在浏览器中 单击共享 然后将链接发送到另一个应用程序 我的应用程序 我发现这个科尔多瓦插件 https github com Initsogar cordova webintent
  • chcp 65001 代码页导致程序终止且没有任何错误

    Problem 当我想要的时候问题就出现了inputPython 解释器中的 Unicode 字符 为简单起见 我在示例中使用了变音符号 但我第一次遇到波斯语字符 每当我使用 Python 时CHCP 65001 https ss64 co
  • OnIdle 事件中的异常不会冒泡

    在我的主窗体上 我订阅了两个事件 Application ThreadException 和 Application Idle 理论上 任何未捕获的异常都应该冒泡到主窗体 但是 如果异常发生在 OnIdle 事件中 则此方法不起作用 系统就