窗体正在关闭时有FormClosing事件,关闭后有FormClosed事件。
可以在这些事件的处理代码中进行这种处理。

解决方案 »

  1.   

    注册窗体的Close事件。在Close的时候释放。或是参考我以前这样的设计:
    http://topic.csdn.net/u/20100825/11/db5a0da2-5f8c-4f27-ac95-1cf06691c104.html
    这里11楼的回复
      

  2.   

    不要在Closing事件中释放,这个时别人做的,我只负责设备这块
    别人的使用就和控件的事件一样用,
      

  3.   

    Form没有属性表明窗体是否已关闭。IsDisposed属性指明的是是否销毁。
      

  4.   

    个人观点:没必要执着于检查窗体的状态,在FormClosing事件或FormClosed事件的处理方法中处理就很好。
      

  5.   


    if (OnUKInsert != null)//OnUKInsert是设备插入事件
                    {
                        //object ojb1 = OnUKInsert.Target;
                        foreach (Delegate dlt in OnUKInsert.GetInvocationList())
                        {
                            object obj = OnUKInsert.Target;
                            //下面两步如何做到?
                            if(关闭)
                               OnUKInsert -= new UKInsertHandler(对象的方法);
                        }
                        OnUKInsert();
                    }
      

  6.   

    if (OnUKInsert != null)//OnUKInsert是设备插入事件
    {
    List<UKInsertHandler> errorList = new List<UKInsertHandler>();
    //安全的调用事件
    foreach (UKInsertHandler dlt in OnUKInsert.GetInvocationList())
    {
    try
    {
    dlg.Invoke();
    }
    catch
    {
    errorList.Add(dlt);
    }
    }
    //移除已经无效的事件
    foreach(UKInsertHandler del in errorList)
    {
        OnUKInsert -= del;
    }
    OnUKInsert();
    }
      

  7.   

    这个好像不行哦,winform窗体关闭了,事件还是可以用的,这个问题只有用反射哦
      

  8.   

    你简直一锅浆糊。
    事件调用的时候加try,catch,发现注册事件的对象释放或不存在了,则注销事件。不继续解释了。