gpt4 book ai didi

vb.net - 以编程方式获取Vb.net中用户已激活的事件的列表

转载 作者:行者123 更新时间:2023-12-03 08:49:13 24 4
gpt4 key购买 nike

我一直在尝试找到一种方法来获取所有用户激活的事件的列表,以便在应用程序崩溃时,它可以提供导致崩溃的所有事件的完整列表,这将有助于发现问题。

是否可以不必在每个事件中手动调用某些东西?

如果我能得到与Visual Studio提供的 list 相似的 list ,那将是很大的帮助。
enter image description here

当前,当程序崩溃时,它会调用自定义表单来通知用户。

Dim currentDomain As AppDomain = AppDomain.CurrentDomain
Private Sub MYExHandler(ByVal sender As Object,
ByVal e As UnhandledExceptionEventArgs)
Dim EX As Exception

EX = e.ExceptionObject
frm_MsgError.ErrorMsg = EX.StackTrace
frm_MsgError.ShowDialog()
End Sub

Private Sub MYThreadHandler(ByVal sender As Object,
ByVal e As Threading.ThreadExceptionEventArgs)
frm_MsgError.ErrorMsg = e.Exception.StackTrace
frm_MsgError.ShowDialog()
End Sub

Private Sub frm_Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load
AddHandler currentDomain.UnhandledException, AddressOf MYExHandler
AddHandler Application.ThreadException, AddressOf MYThreadHandler

因此,如果我也能在这里获得列表,那就更好了。
任何意见是极大的赞赏。谢谢

最佳答案

在这种情况下,答案令人遗憾的是,您要做的只是行不通。

要了解为什么您必须知道什么是“事件”。对于3个函数和一个 EventHandlerList 来说,事件基本上是一种美观的语法。

这三个功能是:

  • 向哈希集
  • 添加处理程序
  • 从哈希集中删除处理程序
  • 使用特定参数
  • 调用哈希集中的所有处理程序

    没什么了。如果使用 Custom关键字声明事件,则可以自己实现这些功能。

    这意味着所有事件处理程序甚至所有事件使用的任何通用功能都没有神奇的中央存储。每个事件都是独立的。

    话虽这么说,但有一种方法可以获取单个类/实例的所有事件并附加到它们。这可以通过调用类类型的 GetEvents 方法来完成。您获得的列表包含 EventDescriptor对象,这些对象提供了您需要附加到事件的 AddHandler 方法。

    虽然不可能在整个.NET运行时中附加所有事件,但是您可以附加到特定对象的事件。

    希望对您有所帮助。

    关于vb.net - 以编程方式获取Vb.net中用户已激活的事件的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45608705/

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