using (start/end)

I'm trying to build something similar to the TimedLock class, but for start & end events. I want to be able to use it like this:

                  using (this.StartEndEvent.Open(this))

                  {

                        // ... do something

                  }

Which would mean:

                  this.StartEndEvent.OnStart(this);

                  // ... do something

                  this.StartEndEvent.OnEnd(this);

(add try/finally as needed).

Here’s my first cut. Can we make it better?

      class StartEndEvent : IDisposable

      {

            public event EventHandler OnStart;

            public event EventHandler OnEnd;

            object _sender;

            public IDisposable Open(object sender)

            {

                  this._sender = sender;

                  this.OnStart(_sender, null);

                  return (IDisposable)this;

            }

            void IDisposable.Dispose() { this.OnEnd(_sender, null); }

      }