问题标签 [dispatcher]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
19869 浏览

javascript - Javascript调度事件

我经常使用 Flash,我的类使用EventDispatcher允许我定义类的自定义事件的类。我怎样才能在 JavaScript 中做到这一点。

我想做这样的事情:

用 JavaScript 怎么可能?

0 投票
3 回答
13461 浏览

php - 如何在 Zend Framework 中进行 preDispatch 转发?

我想_forward()preDispatch检查用户是否在每个控制器中登录后使用。

这个场景很简单:如果用户没有登录,它应该被转发到loginAction同一个控制器或另一个控制器。

这将导致无限循环,因为调度过程重新开始,再次调用preDispatch并且转发将重新开始一切。

我能想出的唯一解决方案是检查是否loginAction已在请求中设置。

所以我的问题是,成熟的开发人员将如何处理这个问题?

更新 点击发送按钮后,神圣意识的幽灵出现了;)另一个想法是构建一个LoginController来处理登录请求。还是有更好的方法?

0 投票
1 回答
533 浏览

c# - WPF:将不可冻结的项目从一个调度程序转移到另一个

我们从 XPS 文档中加载 FixedPage 对象,处理并显示它。以下代码从 Package 中加载 FixedPage:

但是,该 XamlReader.Load() 调用需要很长时间(尤其是对于复杂的 FixedPages)并且有时会阻塞 UI。我们可以在另一个线程中使用它自己的 Dispatcher 执行此操作,但由于 FixedPage 类不是可自由处理的,因此主 UI 线程不能使用它。

有没有解决的办法?现在我们被困在使用 RenderTargetBitmap 将 FixedPages 渲染为图像,因为 BitmapSource 是 Freezable。

0 投票
16 回答
56845 浏览

.net - 如何将 UI Dispatcher 传递给 ViewModel

我应该能够访问属于我需要将其传递给 ViewModel 的视图的调度程序。但是View应该对ViewModel一无所知,那怎么传呢?引入一个接口还是不将其传递给实例,而是创建一个将由视图编写的全局调度程序单例?您如何在 MVVM 应用程序和框架中解决这个问题?

编辑:请注意,由于我的 ViewModels 可能是在后台线程中创建的,所以我不能只Dispatcher.Current在 ViewModel 的构造函数中执行此操作。

0 投票
1 回答
14497 浏览

.net - 确保事物在 WPF 中的 UI 线程上运行

我正在构建一个 WPF 应用程序。我正在与服务器端进行一些异步通信,并在客户端使用事件聚合和 Prism。这两件事都会导致生成不是 UI 线程的新线程。如果我尝试在这些回调和事件处理程序线程上执行“WPF 操作”,那么世界将分崩离析,现在它已经开始这样做了。

首先,我在尝试从服务器的回调中创建一些 WPF 对象时遇到了问题。有人告诉我线程需要在 STA 模式下运行。现在我正在尝试更新 Prism 事件处理程序中的一些 UI 数据,我被告知:

调用者无法访问该线程,因为另一个线程拥有它。

所以; 在 WPF 中做正确的事情的关键是什么?我已经阅读了这篇 MSDN 帖子中的 WPF Dispatcher 。我开始明白了,但我还不是巫师。

  1. 当我需要运行一些我不确定是否会在 UI 线程上调用的东西时,总是使用 Dispatcher.Invoke 的关键是什么?
  2. 如果它实际上是在 UI 线程上调用的,并且无论如何我都执行 Dispatcher.Invoke,这有关系吗?
  3. Dispatcher.Invoke = 同步。Dispathcher.BeginInvoke = 异步?
  4. Dispatcher.Invoke 会请求 UI 线程,然后停止等待吗?响应速度较慢的程序是不好的做法和风险吗?
  5. 无论如何,我如何获得调度员?Dispatcher.CurrentDispatcher 是否总是给我代表 UI 线程的调度程序?
  6. 是否会存在多个 Dispatcher,或者“Dispatcher”是否与应用程序的 UI 线程基本相同?
  7. BackgroundWorker 是怎么回事?我什么时候改用这个?我认为这总是异步的?
  8. 在 UI 线程上运行的所有内容(通过被调用)是否会在 STA 单元模式下运行?即,如果我有一些需要在 STA 模式下运行的东西 - Dispatcher.Invoke 就足够了吗?

有人想为我澄清事情吗?有没有相关推荐之类的?谢谢!

0 投票
2 回答
3836 浏览

.net - 使用 WPF UI 线程应该始终确保 STA 单元模式,对吗?

在我的 WPF 应用程序中,我与服务器异步通信。因此回调将不会在 UI 线程中运行,并且因为我需要在那里做一些 WPF 的东西(创建 InkPresenter 对象),所以我需要它在 UI 线程上运行。好吧,实际上要求是它在具有 STA 单元模式的线程上运行。我尝试使用 STA 模式创建一个新线程,但结果是 UI 线程无法访问 InkPresenter,因为它“由不同的线程拥有”。

我想要在回调中做的是使用 Dispatcher 来调用我需要 STA 的函数。这听起来像是正确的方法吗?我现在这样做,但它仍然失败。在我的回调函数中,我触发了以下函数,该函数现在尝试确保寻址的函数在 UI 线程上运行。

正如您从示例中看到的那样,我使用 CheckAccess() 来确保仅在 UI 线程上尚未运行该函数时才调用该函数。当我的回调调用此函数时,CheckAccess() 始终为 true,但Dispatcher.CurrentDispatcher.Thread.ApartmentState为 MTA。为什么?我尝试删除 CheckAccess() 并始终执行 Invoke,但 ApartmentState 仍然是 MTA,并且创建 InkPresenter 失败。

谁能解释一下我在这里做错了什么?我有错误的调度程序或什么?这是确保在 UI 线程上运行某些东西的正确方法吗?

0 投票
1 回答
921 浏览

silverlight - Silverlight 计时器问题

我正在开发一个带有自定义动画的 Silverlight 应用程序。我想每 1 毫秒更新一次变量 animationCounter,以便在一秒钟内该值为 1000。我尝试过 DispatcherTimer 和 System.Threading.Timer。这边走:

(...)

使用 System.Threading.Timer

他们都在一秒钟内将 AnimationCounter 设置为 100 左右。应该是1000。我不知道为什么。有什么我想念的吗。

谢谢

0 投票
4 回答
2512 浏览

c# - 让 ViewModel 对象持有 Dispatcher 是否被认为是不好的做法?

我的 WPF 应用程序是使用 MVVM 模式构建的。ViewModel 将与服务器异步通信,当返回请求的数据时,会触发 ViewModel 中的回调,并对这些数据进行处理。这将在不是 UI 线程的线程上运行。有时这些回调涉及需要在 UI 线程上完成的工作,所以我需要 Dispatcher。这可能是这样的:

  • 将数据添加到 ObservableCollection
  • 触发 Prism 命令,将设置要在 GUI 中显示的内容
  • 创建某种 WPF 对象。

我尽量避免后者,但我发现这里的前两点对于 ViewModel 来说是合理的事情。所以; 让 ViewModels 持有 Dispatcher 以便能够为 UI 线程调用命令可以吗?或者这被认为是不好的做法?为什么?

0 投票
2 回答
3817 浏览

c# - 如何在 Nunit 中调用 WPF Dispatcher?

我想测试一个使用数据字段值呈现文本块的应用程序。渲染完成后,我想获得实际宽度和实际高度。一切正常。当我尝试测试应用程序时,问题首先出现。我无法从测试项目调用调度程序。

以下是代码。

我刚刚开始使用 NUnit。所以,请帮助我。

谢谢

0 投票
4 回答
22578 浏览

c# - 在线程中获取正确的 WPF 调度程序

在对象的构造函数中,我需要创建一个 WPF mediaElement 对象:

但该类也可以从其他线程实例化,所以我需要使用

但是我怎样才能在该构造函数中获得正确的调度程序实例:s