- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建 DispatcherObject
的子类使用消息队列创建我自己的线程关联对象,就像 WPF 用于 UI 元素一样。
我有一个运行没有崩溃的测试应用程序,但 DispatcherObject 似乎没有处理它的消息队列。我刚刚创建了一个新的空白 WPF 应用程序并将此代码添加到 MainWindow.xaml.cs
:
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
DispatcherWorker worker = null;
ManualResetEventSlim latch = new ManualResetEventSlim(false);
new Thread(() => {
worker = new DispatcherWorker();
latch.Set();
}).Start();
latch.Wait();
// worker.Dispatcher.Thread is stopped by here... why?
worker.Dispatcher.BeginInvoke(new Action(() => {
// This code never executed
worker.DoWork(this);
}));
}
}
public class DispatcherWorker : DispatcherObject {
public void DoWork(MainWindow window) {
VerifyAccess();
window.Dispatcher.BeginInvoke(new Action(() => window.Background = Brushes.Black));
}
}
DoWork()
方法永远不会执行,如果我在调用
BeginInvoke
之前放置一个断点,我看到 Dispatcher 的线程已停止。为什么停止了?我设置线程错误吗?
最佳答案
拥有 Dispatcher
的线程将需要“抽”Dispatcher
.也就是说,需要告诉它处理通过 Dispatcher
排队的消息。 .为此,您使用 DispatcherFrame
:
Dispatcher.PushFrame(new DispatcherFrame());
DispatcherFrame
的文档。
Continue
属性(property)。
DispatcherWorker
无关紧要。类或其他一些内置的 WPF 类。如果没有东西抽
Dispatcher
在该线程上,不会处理任何消息。
关于.net - 从 DispatcherObject 继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8360529/
我想创建 DispatcherObject 的子类使用消息队列创建我自己的线程关联对象,就像 WPF 用于 UI 元素一样。 我有一个运行没有崩溃的测试应用程序,但 DispatcherObject
我想知道如何将 DispatcherObject(在我的例子中是 BitmapSource)复制到另一个线程中。 用例: 我有一个 WPF 应用程序需要在新线程中显示窗口(该应用程序实际上是 Outl
很明显,我对 async/await 有一些不理解的地方。 下面的代码有什么问题?它在异步任务中创建 FDecoder 对象。但在那之后,每当我尝试访问 FDecoder 字段时,我都会收到一个 In
下面的代码非常简化。我正在尝试抽象调度程序上下文,以便我的 View 模型可以同步只能在 GUI 线程上引发的事件。 此模式中有一个循环引用。有没有其他方法可以创建 DispatcherObject
在遍历 this 时文章我遇到了这个声明- If you are writing your own WPF objects, such as controls, all methods you use
我是一名优秀的程序员,十分优秀!