写WPF的多线程一定离不开这两个东西,但是一些偶尔中发现项目中同事功能我多线程调用的时候发现线程安全问题,
一查,他们都把核心操作都放在了UI线程中操作呀 还是全局大范围的直接放Application.Current.Dispatcher.Invoke,
但是依然出现,细查后发现,有的人使用的是Application.Current.Dispatcher 有的人使用的是Dispatcher.CurrentDispatcher
那么他们之间什么区别呢?
1 Application.Current.Dispatcher.Invoke:
Application.Current.Dispatcher 是一个静态属性,它返回当前应用程序的主线程调度程序(Dispatcher)。
调用 Application.Current.Dispatcher.Invoke 将在应用程序的主线程上同步执行指定的操作。
这个方法通常用于在应用程序的任何地方调用UI线程上下文,无论当前代码位于哪个线程上下文。
2 Dispatcher.CurrentDispatcher.Invoke:
Dispatcher.CurrentDispatcher 是一个实例属性,它返回当前线程的调度程序(Dispatcher)。
调用 Dispatcher.CurrentDispatcher.Invoke 将在当前线程上同步执行指定的操作。
这个方法通常用于在后台线程上执行UI操作,或者在自定义的线程上下文中执行UI操作。
Application.Current.Dispatcher.Invoke 用于在主线程上执行UI操作,而 Dispatcher.CurrentDispatcher.Invoke 则用于在当前线程上执行UI操作。在大多数情况下,你应该使用 Application.Current.Dispatcher.Invoke 来确保在UI线程上执行操作,因为它保证了在WPF应用程序中正确的UI线程上下文中执行操作
标签:Invoke,Current,Application,UI,线程,Dispatcher From: https://www.cnblogs.com/stweily/p/18086829