I'm using the 2.2 beta version of the API and I'm seeing very similar behavior, except the Select action value fires 1, 2, or 3 times. The Cancel action never fires. I haven't picked up on the pattern yet, so it seems to be somewhat arbitrary to me. What is even more interesting is that I draw three graphics on the map - a square, a circle, and a diamond. On the select event I check to see what the symbol is on the selected graphic and every once in a while it will be one step behind. For example, I select the circle first and it reports circle, then I select the square and it reports square, then I select the diamond and it reports square, then I select the circle and it reports diamond. Very weird. This happens consistently though.
I'm not quite sure what is going on, but it makes it next to impossible to do anything useful with the selected graphic since you're never quite sure which one it is going to be. I even tried tying into the PropertyChanged event on my graphics layer and reacting to a change in the SelectedGraphics property. The same thing happens there.
Jennifer, I'm still not able to upload a zip file less than 2 MB for some reason. Can I e-mail you the zip file containing my DOTNET project? I think it's very important for you or someone on your side to see this behavior as you haven't been able to replicate it yet.