Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 是否可以在IMessageFilter.PreFilterMessage中引发异常?_.net_Winforms_Imessagefilter - Fatal编程技术网

.net 是否可以在IMessageFilter.PreFilterMessage中引发异常?

.net 是否可以在IMessageFilter.PreFilterMessage中引发异常?,.net,winforms,imessagefilter,.net,Winforms,Imessagefilter,我正在使用消息过滤器控制winform应用程序中的授权。我的(简化)代码如下: public bool PreFilterMessage(ref Message m) { if(IsAllowed()) return true; throw new UnauthorizedAccessException(); } 但在抛出异常后,相同的消息不断返回,导致无限循环 是否可以在PreFilterMessage中引发异常?PreFilterMessage捕获所有发生的

我正在使用消息过滤器控制winform应用程序中的授权。我的(简化)代码如下:

public bool PreFilterMessage(ref Message m)
{
    if(IsAllowed())
        return true;
    throw new UnauthorizedAccessException();
}
但在抛出异常后,相同的消息不断返回,导致无限循环


是否可以在PreFilterMessage中引发异常?

PreFilterMessage捕获所有发生的事件,这可能包括关闭向您引发的异常时触发的事件


因此,PreFilterMessage要么返回true(因此事件被忽略),要么抛出异常。这看起来不像是故意的行为。

只要没人抓住它。您需要禁用ThreadException事件,因为它太难保持应用程序运行。调用Application.SetUnhandledExceptionMode()。在dispatcher循环中强制执行此操作是相当不明智的。只需使用Control.Enabled属性就可以有选择地取消/启用UI。哦,嘿,两个人没有说为什么就投了反对票。嗯,随便了。