After working around the cause of my problem and messing around more with .NET I think I might have stumbled upon the same problem your having. I also wrote an example that shows the problem.
It's simular to the "NET Event Callback for DataWatcher", except it passes strings around, one version passes objects the other strings. The string version works but the object version doesn't, I think the object version is registered as a callback but is never run (hard to tell though).
Matt W