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); }
}