I want to wait for a Task to complete with some special rules:
If it hasn\'t completed after X milliseconds, I want to display a message to the user.
And
If you use a BlockingCollection to schedule the task, the producer can run the potentially long running task and the consumer can use the TryTake method which has timeout and cancellation token built in.