问题标签 [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 投票
2 回答
9135 浏览

wpf - 有没有更好的方法来使用 Dispatcher 更新 UI 元素?

我是 WCF 服务的新手,我试图弄清楚当我异步调用我的 WCF 服务时是否有更好的方法来更新 WPF UI 元素(如标签控件)。

这是一段代码:

如您所见,我正在使用由 AsyncCallback 获得的异步结果更新 label1.Content。

我的问题是,有没有更好或更正确的方法来刷新这个异步回调操作中的 UI 控件?

提前致谢!

0 投票
2 回答
3015 浏览

c# - WPF:在 UI 线程和后台线程之间传递对象

在 InitializeComponents 之后的 Window 构造函数中,我需要创建一个对象并将其绑定到数据网格。由于创建对象花费了太多时间,因此窗口需要一段时间才能显示出来。所以我决定将对象的创建移到后台线程,并通过执行 dispatcher.invoke 来“委托”到 UI 线程来执行绑定。但这失败了。

奇怪的是,如果我尝试设置我在 Dispatcher.invoke 中的矩形的可见性,它可以工作,但 DataGrid.setbinding 不行!有任何想法吗?我在后台工作人员和线程启动中尝试过同样的事情,但我一直收到同样的错误。我无法访问 DataGrid 对象,即使它发生在调度程序调用委托中。在我对它的工作原理的理解中,我肯定会遗漏一些东西。任何建议将不胜感激。谢谢!

更新: 最终使用了只运行一次的调度程序计时器。将绑定代码放在其 Tick 委托中是可行的。但我仍然很好奇为什么上面的代码没有。

0 投票
1 回答
3281 浏览

wpf - 在 WPF 中取消 BeginInvoke

在 WPF 中,我调用 This.Dispatcher.BeginInvoke(DispatcherPriority.SystemIdle, mydelete);

有没有办法稍后取消 BeginInvoke 方法?

谢谢

0 投票
5 回答
72820 浏览

wpf - WPF Dispatcher.BeginInvoke 和 UI/后台线程

我想我需要一些关于 WPF Dispatcher.InvokeDispatcher.BeginInvoke用法的说明。

假设我有一些长时间运行的“工作”代码,例如在简单的 WPF 应用程序中按下按钮时调用:

此代码在执行workAction时锁定了我的用户界面。这是因为 Dispatcher 调用总是在 UI 线程上运行,对吗?

假设这一点,将调度程序配置为在与我的 UI 不同的线程中执行workAction的最佳实践是什么?我知道我可以将BackgroundWorker添加到我的workAction 以防止我的 UI 被锁定:

除了使用BackgroundWorker之外,还有其他更优雅的方法吗?我一直听说BackgroundWorker很古怪,所以我很想知道一些替代方案。

0 投票
3 回答
1114 浏览

wpf - 解释奇怪的 Dispatcher 行为(一个隐藏的 WPF 功能)

我有一个窗口,里面有一个按钮。

背后的代码是

单击该按钮会出现2 个消息框。

同时,跟踪显示Button ThreadIdInvoked ThreadId的数字相同。

0 投票
1 回答
576 浏览

apache-flex - Arraycollection 没有捕获抛出的事件?

我有一个对象集合,每个对象每次更新其值时都会引发一个事件。我试图通过向包含它的 arraycollection 添加一个侦听器来捕获该事件(请参阅主类),但它不起作用。老实说,我不确定这是正确的方法。

我避免使用 Collection.CHANGE,因为它陷入无限递归,最终以堆栈溢出结束。有任何想法吗?




0 投票
2 回答
4310 浏览

windows - 内核与系统中的 Windows 进程

我有一些与内核和用户模式中的 Windows 进程有关的问题。

如果我有一个 hello world 应用程序和一个公开新系统调用 foo() 的 hello world 驱动程序,我很好奇在内核模式下我能做什么和不能做什么。

对于初学者,当我编写新的 hello world 应用程序时,我得到了一个新进程,这意味着我有自己的用户模式 ​​VM 空间(让我们保持简单,32 位窗口)。所以我有 2GB 的空间是我“拥有的”,我可以偷看看,直到心满意足。但是,我受制于我的过程。我不能(暂时不要将共享内存带入其中)触及其他任何人的内存。

如果我编写了这个 hello world 驱动程序,并从我的用户应用程序中调用它,我(驱动程序代码)现在处于内核模式。

首先澄清/问题:我仍然在与用户模式应用程序相同的过程中,对吗?仍然有相同的PID?

内存问题:内存作为 VM 呈现给我的进程,也就是说,即使我有 1GB 的 RAM,我仍然可以访问 4GB 的内存(2GB 用户/2GB 内核 - 不介意服务器上的开关细节或细节,只是一个这里的一般假设)。作为用户进程,我无法查看任何内核模式内存地址,但我可以对用户空间做任何我想做的事情,对吗?

如果我从驱动程序代码调用我的 hello world 驱动程序,我是否仍然对用户模式内存有相同的看法?但是现在我也可以在内核模式下访问任何内存?

这个内核模式内存是共享的吗(与用户模式不同,它是我自己的进程副本)?也就是说,编写驱动程序更像是为操作系统的单个进程编写线程应用程序(调度?)

下一个问题。作为司机,我可以改变我正在运行的进程吗?假设我知道另一个应用程序(例如,用户模式网络服务器),并为该进程加载 VM,更改它的指令指针、堆栈,甚至将不同的代码加载到进程中,然后切换回我自己的应用程序?(我并不想在这里做任何邪恶的事情,我只是好奇处于内核模式到底意味着什么)

另外,一旦进入内核模式,我可以防止操作系统抢占我吗?我认为(在 Windows 中)你可以设置你的 IRQL 级别来做到这一点,但我并不完全理解这一点,即使在阅读所罗门书(Windows 内部......)之后也是如此。我会问另一个与 IRQL/DPC 直接相关的问题,但现在,我很想知道内核驱动程序是否有能力将 IRQL 设置为高并接管系统。

还有更多,但这些问题的答案会有所帮助。

0 投票
1 回答
1767 浏览

wpf - 调度程序线程如何在 wpf UI 控件中工作

Dispatcher 线程如何在 wpf UI 控件中工作?

0 投票
5 回答
14157 浏览

actionscript-3 - as3 - 从父 swf 到子 swf 的 dispatchEvent

我有一个加载其他几个 swf 的主要“父” swf。如果主 swf 发生了什么事,我需要告诉其中一个子 swf。

反过来,这似乎也很有效。任何孩子都可以简单地 dispatchEvent(),我可以设置主 swf 来监听事件。但是,我无法让子 swf 捕获父发送的任何事件。它是如何完成的?

0 投票
3 回答
8235 浏览

c# - WPF Dispatcher Invoke 返回值始终为空

我调用了一个方法,该方法返回UIElement我使用 调用的a Dispatcher,下面是代码。

但是Dispatcher调用的返回值始终为 NULL,有什么想法吗?