Unity throws SynchronizationLockException while debugging
I've found
Unity
to be a great resource for writing unit-testable code, and
tests targeting it. Sadly, not all those unit tests work
perfectly the first time (TDD notwithstanding), and
sometimes it's not even immediately apparent why they're
failing. So I use Visual Studio's debugger. I then see
SynchronizationLockExceptions thrown by Unity calls, when I
never did while running the code without debugging. I hit F5
to continue past these distractions, the line that had the
exception appears to have completed normally, and I continue
on to what I was trying to debug in the first place.
In
settings where Unity isn't used extensively, this is just
one amongst a handful of annoyances in a tool (Visual
Studio) that overall makes my work life much, much easier
and more enjoyable. But in larger projects, it can be
maddening. Finally it bugged me enough where it was worth
researching it.
Amongst the first and most helpful Google results was, of
course, at
Stack Overflow. The first couple answers were extensive but seemed a bit
more involved than I could pull off at this stage in the
product's lifecycle. A bit more digging showed that the
Microsoft team knows about this bug
but hasn't prioritized it into any released build yet. SO
users
jaster
and
alex-g
proposed workarounds that relieved my pain--just go to
Debug|Exceptions..., find the SynchronizationLockException,
and uncheck it. As others warned, this will skip over
SynchronizationLockExceptions in your code that you
want to catch, but that wasn't a concern for me in
this case. Thanks, guys; I've used that dialog before, but
it's been so long I'd forgotten about it.
Now if I could just do the same for
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException...
Until then, F5 it is.