public static bool WaitAll(TaskCoordinator[] tasks, int millisecondsTimeout)
		{
			bool result = true;
			foreach (var t in tasks)
				result &= t.Wait(millisecondsTimeout);
			return result;
		}
		public static bool WaitAll(TaskCoordinator[] tasks, TimeSpan ts)
		{
			bool result = true;
			foreach (var t in tasks)
				result &= t.Wait(ts);
			return result;
		}