Regarding task Dispose vs Close, I believe the bottom line is we want to ensure the resource used in task is released in any cases as otherwise evaluator won't be clean if we want to reuse it in fault tolerant scenarios.

In normal scenario, Close() will be called and we can dispose task in Close. What if in some scenarios task suddenly crashes and there is no chance for Close to be called? In Task dispose method, we usually always check only to release resources if it is not released yet, so overlap case is covered.

If we can sure Close is always called in any failed/crash scenarios, we may not need to overlap, which I agree.


-----Original Message-----
From: Markus Weimer <[EMAIL PROTECTED]>
Sent: Monday, July 9, 2018 9:23 AM
To: REEF Developers Mailinglist <[EMAIL PROTECTED]>
Subject: Re: ITask and IDisposable

Good find! We'd need input from more .NET experienced devs here.

That being said, the Java `Task` doesn't extends `AutoCloseable`, which would be the equivalent of `IDisposable`. Maybe the right call here is to remove the `IDisposable` from the interface? And add code that checks whether task indeed implements it and if so, follows the current behavior with a WARNING in the log?


On Sun, Jul 8, 2018 at 11:21 AM,  <[EMAIL PROTECTED]> wrote: