Found the problem.
With .NET 3.0 ( 3.0.04506 ), BeginInvoke had the following overloads:
- Dispatcher.BeginInvoke(DispatcherPriority,
Delegate);
- Dispatcher.BeginInvoke(DispatcherPriority,
Delegate, Object);
- Dispatcher.BeginInvoke(DispatcherPriority,
Delegate, Object, Object[]);
With 3.0 SP2 ( 3.0.30618 ), the following were added.
- Dispatcher.BeginInvoke(Delegate, Object[]); <--- we were using this one
- Dispatcher.BeginInvoke(Delegate, DispatcherPriority, Object[]);
When ran on a machine with the RTM version of .NET, since the method isn't there yet,
a MissingMethod exception is thrown, so the delegate was never executed.
The solution right now is to use the "old" overload : Dispatcher.BeginInvoke(DispatcherPriority, Delegate);
Now, this really sucks. No one can ever use the new overloads and sleep at night.
Now to hunt why the exception was silently handled...
Thanks everyone!