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

45 lines
2.0 KiB
Markdown

## 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:
- If an exception occurs, the <xref:System.Windows.Threading.Dispatcher.UnhandledExceptionFilter> and <xref:System.Windows.Threading.Dispatcher.UnhandledException> events are not raised. Instead, exceptions are handled by the <xref:System.Threading.Tasks.TaskScheduler.UnobservedTaskException?displayProperty=name> event.
- Calls to some members, such as <xref:System.Windows.Threading.DispatcherOperation.Result>, block until the operation has completed.
- [ ] Quirked
- [x] Build-time break
### Recommended Action
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)
<!-- breaking change id: 23 -->