是否可以在IMessageFilter.PreFilterMessage中抛出异常?

时间:2017-09-28 10:25:14

标签: .net winforms imessagefilter

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

public bool PreFilterMessage(ref Message m)
{
    if(IsAllowed())
        return true;
    throw new UnauthorizedAccessException();
}

但是在抛出异常后,同样的消息不断回来,导致无限循环。

是否可以在PreFilterMessage中抛出异常?

1 个答案:

答案 0 :(得分:-1)

PreFilterMessage捕获所有发生的事件,这可能包括当您关闭抛出异常时触发的事件。

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