我认为我的代码是安全的,但事实并非如此。什么时候创建窗口句柄
我正在使用表单来显示一些在我的应用程序的其他地方创建和管理的消息。
要获得此消息,我正在使用一个代理,将其添加到form.load
事件中的外部事件中。
private void ErrorLog_Load(object sender, EventArgs e)
{
//error handler has been properly initialized in the ctor
Handler.getInstance().errorOccured += errorHandler;
}
我我需要调用形式的回调:
protected void handleError(SenderInfo sender, ErrorEventArgument argument)
{
if (this.InvokeRequired)
{
this.Invoke(errorHandler, new object[] { sender, argument });
}
else
{
//update the form
}
}
而且在关闭/关闭事件回调注册。
现在我有一种情况,窗口被创建为一个mdi子窗口,显然没有显示(被另一个mdi窗口隐藏),并且该应用程序在调用消息时窗口句柄没有被创建。
所以三个问题: 在哪个时间点是形式的窗口句柄从加入this.IsHandleCreated
创建 Appart酒店我handleError
我应该如何提高我的代码 什么是注销回调正确的事件?
TIA
马里奥
你可以检查handleError/errorHandler,是一个错字或问题的原因? – 2011-05-09 06:58:29
@亨克不,这不是一个错字。在调用中,我重新使用在ctor中创建的委托,它指向handleError(我只是懒于创建一个新的) – 2011-05-09 07:00:10