public void Dispose()
{
if (Delegates != null) {
foreach (var i in Delegates) {
XTask.CurrentExecutingTask.RemoveEventHandler(i);
}
Delegates = null;
GC.SuppressFinalize(this);
// encourage a bit of cleanup
Task.Factory.StartNew(XTask.Collect);
}
}