Tag: 调度程序

确保事情在WPF的UI线程上运行

我正在构build一个WPF应用程序。 我正在做一些与服务器端的asynchronous通信,我在客户端使用Prism的事件聚合。 这两件事情都会导致产生新的线程,而不是UI线程。 如果我试图在这些callback和事件处理程序线程上执行“WPF操作”,那么世界将会崩溃,现在它已经开始了。 首先,我遇到了问题,尝试在服务器的callback中创build一些WPF对象。 我被告知该线程需要在STA模式下运行。 现在我试图在Prism事件处理程序中更新一些UI数据,并告诉我: 调用者不能访问此线程,因为不同的线程拥有它。 所以; 什么是在WPF中正确使用的关键? 我已经阅读了这篇MSDN文章中的WPF Dispatcher。 我开始明白了,但我还不是巫师。 当我需要运行一些我不确定的东西时,总是使用Dispatcher.Invoke的关键是在UI线程上调用吗? 如果它实际上是在UI线程上调用,那么它是否重要?我仍然使用Dispatcher.Invoke? Dispatcher.Invoke =同步。 Dispathcher.BeginInvoke =asynchronous? 请问Dispatcher.Invoke请求UI线程,然后停下来等待呢? 这是不好的做法和风险较低的应对scheme? 我怎样才能得到调度员? 请问Dispatcher.CurrentDispatcher总是给我代表UI线程的调度程序? 会不会有一个以上的Dispatcher,或者是“Dispatcher”与应用程序的UI线程基本相同? 和BackgroundWorker有什么关系? 我什么时候用这个呢? 我认为这总是asynchronous? 一切运行在UI线程(通过被调用)运行在STA公寓模式? 也就是说,如果我有需要在STA模式下运行的东西 – Dispatcher.Invoke是否足够? 任何人想为我清理的东西? 任何相关的build议,等等? 谢谢!

使用Heroku调度程序与Node.js

有没有关于使用Heroku调度与Node.js的教程。 假设我有一个名为sayHello()的函数,我想每10分钟运行一次。 我怎样才能在控制器中使用它。 在ruby中你写了rake function_name(),但是没有对Node做任何解释。 我可以写'/ sayHello'或者我应该做额外的configuration?

如何通过命令行启动Windows调度程序?

我的意思是从命令行打开内置的Windows GUI,而不是由Schtasks启动

如何获得UI线程调度程序?

当没有任何UI元素的引用时,有什么办法可以获得UI线程的Dispatcher ?

Dispatcher.CurrentDispatcher与Application.Current.Dispatcher

Dispatcher.CurrentDispatcher (在System.Windows.Threading )和Application.Current.Dispatcher (在System.Windows )之间有什么区别? 我的直觉告诉我, Application.Current.Dispatcher将永远不会改变,并且对当前应用程序中的所有线程都是全局的,而Dispatcher.CurrentDispatcher可能会根据调用它的线程创build一个Dispatcher.CurrentDispatcher的新实例。 那是对的吗? 如果是这样, Dispatcher.CurrentDispatcher的目的主要是用于multithreadingUI吗?

Dispatcher.BeginInvoke:不能将lambda转换为System.Delegate

我试图调用System.Windows.Threading.Dispatcher.BeginInvoke 。 该方法的签名是这样的: BeginInvoke(Delegate method, params object[] args) 我试图将它传递给一个Lambda,而不必创build一个Delegate。 _dispatcher.BeginInvoke((sender) => { DoSomething(); }, new object[] { this } ); 它给我一个编译器错误,说我不能将lambda转换为System.Delegate。 委托的签名将一个对象作为参数并返回void。 我的lambda匹配这个,但它不工作。 我错过了什么?

如何将UI调度程序传递给ViewModel

我应该能够访问属于视图我需要将其传递给ViewModel的分派器 。 但视图不应该了解任何有关ViewModel,所以你怎么通过它? 引入一个接口,而不是将它传递给实例创build一个全局的调度程序单身人士,将由视图? 你如何在你的MVVM应用程序和框架中解决这个问题? 编辑:请注意,因为我的ViewModels可能在后台线程中创build,我不能只是在ViewModel的构造函数中执行Dispatcher.Current 。

在unit testing中使用WPF Dispatcher

我很难让分派器运行一个委托,我unit testing时传递给它。 运行程序时一切正常,但在unit testing期间,以下代码将不会运行: this.Dispatcher.BeginInvoke(new ThreadStart(delegate { this.Users.Clear(); foreach (User user in e.Results) { this.Users.Add(user); } }), DispatcherPriority.Normal, null); 我有这个代码在我的viewmodel基类来得到一个分派器: if (Application.Current != null) { this.Dispatcher = Application.Current.Dispatcher; } else { this.Dispatcher = Dispatcher.CurrentDispatcher; } 有什么我需要做的初始化单位testing分派器? 分派器从不运行委托中的代码。

使用Dispatcher.Invoke从非主线程更改WPF控件

我最近开始在WPF编程,碰到以下问题。 我不明白如何使用Dispatcher.Invoke()方法。 我有线程的经验,我已经做了一些简单的Windows窗体程序,我刚刚使用 Control.CheckForIllegalCrossThreadCalls = false; 是的,我知道这是很蹩脚的,但这些都是简单的监控应用程序。 事实上,现在我正在做一个WPF应用程序,在后台检索数据,我开始一个新的线程,使调用检索数据(从networking服务器),现在我想显示在我的WPF表单。 事情是,我不能从这个线程设置任何控制。 甚至没有标签或任何东西。 这怎么解决? 回答评论: @Jalfp: 所以当我得到这些数据的时候,我在“新步伐”中使用了这个Dispatcher方法? 或者,我应该让一个后台工作人员检索数据,把它放到一个字段,并开始一个新的线程,等待这个字段填充,并呼吁调度员显示检索到的数据到控制?