In RemoveTaskFromRunningList(Task completedTask), do not first check if completed task is null and in the list of running tasks. The task should never be null and always be in the list of running tasks, and, even if this does happen, invoking runningTasks.Remove(completedTask) with a null task is not a problem.
In RemoveTaskFromRunningList(Task completedTask), do not first check if completed task is null and in the list of running tasks. The task should never be null and always be in the list of running tasks, and, even if this does happen, invoking runningTasks.Remove(completedTask) with a null task is not a problem.

In Shutdown(bool) use the actual number of threads that we wait on in log message. This also ensures we always access runningTasks in a synchronized block.

sean-gilliam/quartznet,sean-gilliam/quartznet,quartznet/quartznet,sean-gilliam/quartznet,quartznet/quartznet,sean-gilliam/quartznet,quartznet/quartznet,quartznet/quartznet,quartznet/quartznet,sean-gilliam/quartznet