1

通过 .NET 4.0(使用 VB2010)编写 Winforms 应用程序。它有一个单一的形式,包括一个异步引发事件的 ActiveX COM 控件。这些事件由表单代码文件上的钩子函数处理。应用程序不会启动任何线程(当然除了主线程)。

我应该防止事件处理程序重入吗?事件A的钩子函数正在执行时是否可以调用事件B的钩子函数?

{ 搜索网络提出了几个相互矛盾的答案。我在这里感到困惑......}

4

2 回答 2

2

ActiveX 控件与 .NET 控件没有任何不同。无论您在事件中做什么 影响控件的事件处理程序肯定会引发另一个事件。或者可能会再次引发事件 A。另一个事件很少引起麻烦,但后一种情况通常会导致该站点的名称异常。你用同样的方法修复它,一个防止重新进入的布尔字段。

基本机制是相同的。ActiveX 控件也可以在属性设置器中触发事件。这与线程或单线程单元没有任何关系。

于 2012-11-17T21:58:47.627 回答
1

在不知道涉及哪个 ActiveX 控件和事件的情况下,答案只能是相当笼统的:

您应该始终以优雅的方式处理任何重入。
您可以“丢弃”任何重新进入,也可以并行处理它们,或者您可以“排队”它们并一个接一个地处理它们......

没有更多细节,我看不到更具体的方法:-(

于 2012-11-17T21:46:13.337 回答