事件 EventHandler是否已注册问题。

1:申明事件

       public event EventHandler<ReplaceMaterietChangedEventArgs> ReplaceMaterietChanged;

2:注册事件

        public void RegisterMateriet()
        {
            frmMain.GetInstance.ReplaceMater.Value.ReplaceMaterietChanged -= ReplaceMaterietChanged;
            frmMain.GetInstance.ReplaceMater.Value.ReplaceMaterietChanged += ReplaceMaterietChanged;
        }

在不借助第3方变量的情况下 如何知道

frmMain.GetInstance.ReplaceMater.Value.ReplaceMaterietChanged 

已经注册了事件呢?

因为RegisterMateriet在某个动作触发时候才执行注册。这个动作可能会多次触发 而我又不想第一次load的时候 就注册。


白板的微信
浏览 803回答 2
2回答

阿晨1998

int flag=0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void RegisterMateriet()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {  if(Interlocked.CompairExchange(ref flag,1,0)==0)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {    //..register your event    }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

呼唤远方

ReplaceMaterietChanged&nbsp;!=&nbsp;null&nbsp;&&&nbsp;ReplaceMaterietChanged.GetInvocationList().Length&nbsp;>&nbsp;0
打开App,查看更多内容
随时随地看视频慕课网APP