当前位置: 首页 > 编程语言 > C#

等价于WPF中的InvokeRequired分享

时间:2023-04-10 11:14:29 C#

等价于WPF中的InvokeRequiredWPF中有没有等价于Form.InvokeRequired的,比如Dispatcher.InvokeRequired?这有点奇怪,因为它没有出现在智能感知中,但你可以使用:vardispatcher=myDispatcherObject.Dispatcher;if(dispatcher.CheckAccess()){/*...*/}由于所有UI组件都继承自DispatcherObject因此这应该可以解决您的特定问题,但它并不特定于UI线程-它可以与任何调度程序一起使用。等同于Dispatcher.CheckAccess。想到的一个可能的解决方案是:if(Dispatcher.Thread.Equals(Thread.CurrentThread)){Action();}else{Dispatcher.Invoke(动作);如果您正在构建Windows应用程序商店应用程序,则上述示例将不会启动。这是一个工作示例。当然按需修改:)以上是C#学习教程:相当于WPF中InvokeRequired分享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——//////相册取回后更新UI。这可以防止在接收专辑列表时出现烦人的延迟。//////publicvoidUpdateUiAfterAlbumsRetrieved(System.Collections.ObjectModel.ObservableCollectionalbums){if(!Dispatcher.HasThreadAccess){Dispatcher.RunAsync(CoreDispatcherPriority.Normal,()=>{ddlAlbums.DataContext=albums;ddlAlbums.IsEnabled=true;tbxProgress.Text=String.Empty;ProgressBar.IsIndeterminate=false;ProgressBar.Visibility=Windows.UI.Xaml.Visibility.Collapsed;});}else{ddlAlbums.DataContext=专辑;ddlAlbums.IsEnabled=true;tbxProgress.Text=String.Empty;ProgressBar.IsIndeterminate=false;点击右侧联系管理员删除。如需转载请注明出处: