Is there a generic Task.WaitAll?
c#, covariance, generics, task-parallel-library
Solution
I'm pretty sure it's a safe operation even with the warning, but if you really wanted to get around it a better option than creating your own implementation would be just to convert your `tasks` parameter into the type it wants:
Task.WaitAll(tasks.Cast<Task>().ToArray())
That kills the blue squiggles for me, lets me keep my `tasks` variable generic and doesn't force me to create a whole lot of new scary code that's ultimately unnecessary.
Problem
I start a few parallel tasks, like this: ``` var tasks = Enumerable.Range(1, 500) .Select(i => Task.Factory.StartNew<int>(ProduceSomeMagicIntValue)) .ToArray(); ``` and then join them with ``` Task.WaitAll(tasks); ``` On this last line I get a blue squiggly marker under `tasks`, with a warning message: ``` Co-variant array conversion from Task[] to Task[] can cause run-time exception on write operation. ``` I understand why I get this message, but is there a way around that? (for example, like a generic version of `Task.WaitAll()`?)