gpt4 book ai didi

ReactiveUI 消息总线

转载 作者:行者123 更新时间:2023-12-01 14:38:42 24 4
gpt4 key购买 nike

我正在测试 ReactiveUI,看起来很不错。

但是,我对 MessageBus 有点困惑。

示例代码:

var bus = new MessageBus();
int result = -1;

bus.Listen<int>().Subscribe(x => result = x);
bus.SendMessage(42);

它在调用 Assert 语句时确实有效,但在标准 WPF 应用程序中,结果值永远不会更新。这可能是由于调度程序的实现,但我还不太清楚。

欢迎任何提示。

最佳答案

结果是最终更新的(与调用 Dispatcher.BeginInvoke 相同),而不是立即更新。默认情况下,RxUI 在单元测试运行器中以不同的方式安排事情,以便更容易编写单元测试 - 这就是您在单元测试运行器输出中看到警告的原因。

如果您改为执行以下操作:

var bus = new MessageBus();

bus.Listen<int>().Subscribe(x => MessageBox.Show("The answer is " + x));
bus.SendMessage(42);

您会看到消息框(如果没有,那肯定是一个错误!)。

为什么 MessageBus 被延迟?它使编写异步代码变得更容易,因为您现在可以从其他线程发送消息,而不会因为访问错误线程上的对象而看到 WPF 可怕的 InvalidOperationException。

关于ReactiveUI 消息总线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5825404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com