dotnet/Documentation/compatibility/new-(ambiguous)-dispatcher_...

2.0 KiB

New (ambiguous) Dispatcher.Invoke overloads could result in different behavior

Scope

Minor

Version Introduced

4.5

Source Analyzer Status

Available

Change Description

The .NET Framework 4.5 adds new overloads to Dispatcher.Invoke that include a parameter of type @System.Action. When existing code is recompiled, compilers may resolve calls to Dispatcher.Invoke methods that have a @System.Delegate parameter as calls to Dispatcher.Invoke methods with an @System.Action parameter. If a call to a Dispatcher.Invoke overload with a @System.Delegate parameter is resolved as a call to a Dispatcher.Invoke overload with an @System.Action parameter, the following differences in behavior may occur:

To avoid ambiguity (and potential differences in exception handling or blocking behaviors), code calling Dispatcher.Invoke can pass an empty object[] as a second parameter to the Invoke call to be sure of resolving to the .NET 4.0 method overload.

Affected APIs

  • M:System.Windows.Threading.Dispatcher.Invoke(System.Delegate,System.Object[])
  • M:System.Windows.Threading.Dispatcher.Invoke(System.Delegate,System.TimeSpan,System.Object[])
  • M:System.Windows.Threading.Dispatcher.Invoke(System.Delegate,System.TimeSpan,System.Windows.Threading.DispatcherPriority,System.Object[])
  • M:System.Windows.Threading.Dispatcher.Invoke(System.Delegate,System.Windows.Threading.DispatcherPriority,System.Object[])

Category

Windows Workflow Foundation (WF)