What is the recommended way to dispose of subscriptions that are created in a loop?
In the following contrived example I'm generating subscriptions in a for loop and adding them to a List
and disposing them explicity by for eaching over the List
This seems a bit smelly to me and I'm thinking that there has to be a cleaner way to clean up the subscriptions unless the GC disposes them when it runs. Do I need to explicity Dispose the subscriptions?
class Program
{
static void Main(string[] args)
{
Func<int, IEnumerable<int>> func = x =>
{
return Enumerable.Range(0, x);
};
List<IDisposable> subsriptions = new List<IDisposable>();
for (int i = 1; i < 10; i++)
{
var observable = func(i).ToObservable().ToList();
var subscription = observable.Subscribe(x => Console.WriteLine(x.Select(y => y.ToString()).Aggregate((s1, s2) => s1 + "," + s2)));
subsriptions.Add(subscription);
}
Console.ReadLine();
subsriptions.ForEach(s => s.Dispose());
}
}