Sun, September 7, 2008, 10:44 PM under
ParallelComputing
The second
question (B) of the quiz I posted here was meant to make you think about the complications of adding a Task reference to the Watch window. I then went on to show how to use
Tack.Current and make object id as a technique to help a bit. I continued by
taking advantage of the DebuggerDisplayAttribute which essentially results in a productivity boost. The real question though is why during debugging would I want to watch a Task to start with?
Well, my hope is that the Task object would get more public properties that I can use to determine things like e.g. its status. But the real need is to be able to create a holistic view of my system in terms of *all* the Tasks that my code creates explicitly or implicitly. That need is what I’ve been trying to approximate with the Watch window, but so far it has ended up being a very poor solution.
So, my wish as a developer embracing the Task-based programming, is to have some way (e.g. a new VS debugger toolwindow?) of viewing all the Tasks in my system and being able to quickly determine which ones are not scheduled yet (let’s call them
Initialized), which ones are
Running and which ones have run a bit and now are
Waiting on some resource before they can continue. If we imagine that we have this view, then I get greedy and I also want to be able to quickly see the
call stack of each Task and also
which thread it is executing on. My greed continues to the extent of wanting to easily view the
parent-child relationship between Tasks. Have I missed any requirement? What information would you want to see in a dedicated
Tasks window?