开发者

how to remove the listening of callback on anonymous method?

I wrote some class:

public class A 
{
    public A()
    {
        serviceAdapter.CompletedCallBackEvent += new EventHandler( foo );
        .
        .
        .
    }

    void foo(object sender, EventArgs e)
    {
        serviceAdapter.CompletedCallBackEvent -= new EventHandler( foo );
    }
}

Now, i want to change this callback listener with some anonymous - but i don't know how to remove the callback listener in the anonymous method .

class A
{
 开发者_开发问答   public A()
    {
            serviceAdapter.CompletedCallBackEvent += delegate( object sender, EventArgs ee )
            {
                  ... need to remove the listener to the event. 
            }
    }
}


You could simply assign your delegate/handler to a private variable.

private EventHander _handler = null;

public A()
{        
    _handler = delegate( object sender, EventArgs ee)
        {          
            ServiceAdapter.CompletedCallBackEvent -= _handler;
        };
    ServiceAdapter.CompletedCallBackEvent += _handler;
}


You can't remove the anonymous delegate like that. See MSDN article on anonymous delegates. Also worth reading this article

You may be able to do:

     public A()
     {
         EventHandler myHandler = null;
         myHandler = new EventHandler(delegate(object s, EventArgs e)
             {
                 serviceAdapter.CompletedCallbackEvent -= myHandler;
             });

         serviceAdapter.CompletedCallBackEvent += myHandler;
     }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜