Move pinging of endpoints to a background thread - improves both the responsiveness of the UI and the speed at which endpoints get pinged.
Move all task processing to a separate class that runs tasks as BackgroundWorkers.  Vastly improves responsiveness when tasks have been scheduled.

However, so far I haven't managed to get the TasksCollection bound in a useful way to the tasks grid.  Tasks run, but nothing is shown to the user.