我已经用谷歌的眼光和愚蠢的头脑试图弄清楚这段代码实际上应该完成什么。
在某些情况下,使用 true 的 bool arg 调用以下内容(如此处所示),其他时候为 false:
InitializeBackgroundThread_PDALoginTerminate(true);
InitializeBackgroundThread_PDALoginTerminate() 方法连接或断开事件处理程序,似乎:
private void InitializeBackgroundThread_PDALoginTerminate( bool add )
{
try
{
if ( add )
pc.PDALoginTerminate += new PendingCommands.PDALoginTerminateEventHandler( DeinitLoginDialogs );
else
pc.PDALoginTerminate -= new PendingCommands.PDALoginTerminateEventHandler( DeinitLoginDialogs );
. . .
...这是 PendingCommands.PDALoginTerminateEventHandler() 指向的代码:
public delegate void PDALoginTerminateEventHandler();
public event PDALoginTerminateEventHandler PDALoginTerminate;
public void OnPDALoginTerminate()
{
if (PDALoginTerminate != null)
PDALoginTerminate();
}
我看不出这里发生了什么,如果真的发生了什么;似乎代码只是在追逐自己的尾巴,或者是一个大雁追逐/循环引用;右键单击 PDALoginTerminate() 将我带到它上面的行。
我错过了什么(除了,希望是暂时的,还有一点我的理智)?
注意:这是一个 .NET 1.1 项目。
更新
我喜欢简化的想法,但如果我这样做:
pc.PDALoginTerminate += DeinitLoginDialogs;
...我得到,“方法 'PDAClient.frmCentral.DeinitLoginDialogs()' 引用不带括号”
...如果我这样做:
pc.PDALoginTerminate += DeinitLoginDialogs();
我得到,“不能隐式地将类型'void'转换为'PendingCommands.PDALoginTerminateEventHandler' ”