Tag: 调度程序

Application.Current.Shutdown()与Application.Current.Dispatcher.BeginInvokeShutdown()

首先介绍一下:我有一个WPF应用程序,它是传统Win32应用程序的GUI前端。 遗留应用程序在单独的线程中作为DLL运行。 用户在UI中选择的命令在该“遗留线程”上被调用。 如果“遗留线程”结束,GUI前端不能再做任何有用的事了,所以我需要关闭WPF应用程序。 因此,在线程方法的最后,我调用Application.Current.Shutdown() 。 由于我不在主线程上,我需要调用此命令。 但是,我注意到Dispatcher也有BeginInvokeShutdown()来关闭调度程序。 所以我的问题是:调用之间有什么区别 Application.Current.Shutdown(); 并打电话 Application.Current.Dispatcher.BeginInvokeShutdown();

multithreadingWPF应用程序:Dispatcher Invoke。 一种更有效的方式?

使用.NET 3.5 嗨,大家好,我正在为一个项目制作一个WPF应用程序,我只是看看有关Dispatcher和multithreading的一些见解。 我的计划的一个例子: Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action( () =>_aCollection.Add(new Model(aList[i], aSize[i])))); Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action( () => _Data.Add(new DataPoint(Id, aList[i])))); Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action( () => _historical[0].Add(aList[i]))); 据我所知,当另一个线程访问除创建它之外的对象时,WPF不喜欢。 然而,我认为必须有一个更好的方法,而不是让这么多的调度员调用,至少有人可以把我推向正确的方向(如果有更好的解决方案)。 干杯,Sparky

了解Silverlight Dispatcher

我有一个无效的跨线程访问问题,但有一点研究,我设法通过使用Dispatcher修复它。 现在在我的应用程序中,我有延迟加载的对象。 我使用WCF进行异步调用,像往常一样,我使用Dispatcher更新我的对象DataContext,但它不适用于这种情况。 不过我在这里找到了解决方案。 这是我不明白的。 在我的UserControl中,我有代码在我的对象上调用Toggle方法。 对此方法的调用在Dispatcher中是这样的。 Dispatcher.BeginInvoke( () => _CurrentPin.ToggleInfoPanel() ); 正如我之前提到的,这还不足以满足Silverlight。 我必须在我的对象中进行另一个 Dispatcher调用。 我的对象不是UIElement ,而是一个处理所有自己的加载/保存的简单类。 所以问题是通过调用来解决的 Deployment.Current.Dispatcher.BeginInvoke( () => dataContext.Detail = detail ); 在我class上。 为什么我必须两次调用Dispatcher来实现这一目标? 高级电话不应该足够吗? 在UIElement中Deployment.Current.Dispatcher和Dispatcher之间有区别吗?

调用线程无法访问此对象,因为另一个线程拥有它.WPF

每当我刷新标签时,我都会收到此错误: 调用线程无法访问此对象,因为另一个线程拥有它。 我试图调用,但它失败了。 我正在使用WPF表格。 delegate void lostfocs(string st); private void imgPayment_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Thread t = new Thread(modi); t.Start(); } void modi() { try { label1.Content = “df”; } catch { lostfocs ld = new lostfocs(up); // ld.Invoke(“df”); object obj=new object(); ld.Invoke(“sdaf”); } } void up(string st) { label1.Content = st; }

使用C#Dispatcher

我正在建立一个聊天客户端,并不是100%确定如何使用dispatcher 。 所以问题是我有一个方法: public void LostConnection() { myGUI.chatBox.AppendText(“Lost connection to room: “+ myGUI.UsernameText.ToString() + “\r\n”); } 我是否需要使用Dispatcher.Invoke来表达(myGUI.chatBox… )的语句? 我感谢任何帮助。