Consider the following scenario...
class FileProcessor : IDisposable { public void Dispose() { //Disposes resources. } public async void OnNext(string fileName) { await Task.Run(() => { var lines = File.ReadLines(fileName); //long processing with the lines... }); } } class Program { static void Main(string[] args) { var fp = new FileProcessor(); fp.OnNext("some file"); fp.OnNext("some file"); //dispose is called and the object reference is set to null. fp.Dispose(); fp = null; //..but the async tasks are still running... //Will they run to completion no matter how long they take? Console.ReadKey(); } } upon calling dispose and setting the object reference to null, will the tasks run to completion?
The OnNext method does not depend on any resources that are disposed.