javascript

git

java

python

git-remote

c++

github

django

c#

reactjs

spring-mvc

reflection

javascript-objects

html5

analytics

node.js

performance

branch-prediction

git-commit

git-revert

设计模式-IObservable vs普通事件,或者为什么应该使用IObservable?

微软通过.NET Framework 4向BCL引入了IObservable<T>接口,我想:“太好了,最后,我必须使用它!” 因此,我深入研究并阅读了帖子和文档,甚至实现了该模式。

这样做之后,我意识到基本实现实际上将所有T事件发送给所有订阅者,而没有对其进行任何过滤。 即纯广播。 我在某处读到Observable模式是用于普通广播的。 我觉得这是不正确的,我缺少了一些东西。

我的问题:

  1. 如果添加过滤机制,则使用Observable模式与仅使用普通CLR事件有什么区别?

  2. 什么时候应该使用这种模式,什么时候应该选择使用普通的CLR事件?

  3. 可观察模式的主要优点是什么?

trans by 2020-08-12T10:28:49Z

system.reactive-什么是冷热观测?

我观看了视频,了解了一般原则-即使没有人订阅,也会发生热播,而“按需”会发生冷播。此外,Publish()将冷转换为热,而Defer()将热转换为冷。

但是,我仍然感觉不到细节。 以下是我想回答的一些问题:

  • 您可以为这些术语提供全面的定义吗?
  • 在可观察到的热点上调用“发布”,或在寒冷的实例上调用“延迟”是否有意义?
  • 热/冷转换有哪些方面-例如,您是否丢失了消息?
  • IObservable和IEnumerable的热定义和冷定义之间是否有区别?
  • 进行冷或热编程时,应考虑哪些一般原则?
  • 关于热/冷观测的其他技巧?
trans by 2020-07-31T03:07:50Z

C#-Reactive Extension(Rx)教程最多由d

我对Reactive Extensions颇有兴趣,但是找不到最新的教程。 我从使用.NET的Reactive Extensions治愈异步蓝调开始,但是它已经过时了。 我可以找出一些变化,但无法获得许多示例。

我在网上发现了很多文章,主要来自2009、2010,但它们与当前版本也不兼容。 我对将Rx与Windows Phone和WebClient结合使用特别感兴趣:

WebClient wc = new WebClient();

var o = Observable.FromEvent<DownloadStringCompletedEventArgs>(wc, "DownloadStringCompleted").Select(newString => newString.EventArgs.Result);

// Subscribe to the observable, and set the label text
o.Subscribe(s => myLabel.Text = s);

// Start the download
wc.DownloadStringAsync(new Uri("http://www.data.com/service"));

不再工作,用FromEventPattern替换FromEvent是不够的。

有人可以指出我最新的资源吗?

trans by 2020-01-26T09:50:19Z

何时使用Observable.FromEventPattern而不是Observable.FromEvent?

我们有一个客户正在调用TIBCO EMS队列,并且正在整理如下事件:

var msgConsumer = _session.CreateConsumer(responseQueue);
var response = Observable.FromEvent<EMSMessageHandler,EMSMessageEventArgs>
            (h => msgConsumer.MessageHandler += h, h => msgConsumer.MessageHandler -= h)
            .Where(arg => arg.Message.CorrelationID == message.MessageID);

当我致电FromEvent时,我得到System.ArgumentException“错误绑定到目标方法。”

我可以将其与FromEvent一起使用,但是随后它作为字符串而不是干净的事件出现了。

我也有FromEvent而不是FromEventPattern

我想了解的是:何时应该使用FromEvent而不是FromEventPattern? 似乎有点试验和错误。

trans by 2020-01-12T01:39:24Z

首页> C#> ObserveOn和SubscribeOn-工作正在唐

基于阅读此问题:SubscribeOn和ObserveOn有什么区别

Where设置执行predicate处理程序中代码的位置:

Where

Where方法设置在哪个线程上完成流的设置。

我被领会到,如果未明确设置这些参数,则使用TaskPool。

现在我的问题是,让我说这样的事情:

Where

假设some_action在调度程序上执行,那么Where predicateSelectMany lots_of在哪里执行?

trans by 2019-12-27T07:47:37Z

c# - 为什么不在.NET Reactive Extensions中推荐主题?

我目前正在研究.NET的Reactive Extensions框架,我正在研究我发现的各种介绍资源(主要是[http://www.introtorx.com]]

我们的应用程序涉及许多检测网络帧的硬件接口,这些接口将是我的IObservables,然后我有各种组件将消耗这些帧或对数据执行某种方式的转换并生成新类型的帧。 例如,还有其他组件需要显示每个第n帧。我确信Rx对我们的应用程序有用,但是我正在努力处理IObserver接口的实现细节。

我读过的大多数(如果不是全部)资源都说我不应该自己实现IObservable接口,而是使用提供的函数或类之一。根据我的研究,似乎创建一个Subject<IBaseFrame>将为我提供我需要的东西,我会让我的单线程从硬件接口读取数据,然后调用我的Subject<IBaseFrame>实例的OnNext函数。 然后,不同的IObserver组件将从该Subject接收其通知。

我的困惑来自本教程附录中的建议,其中说:

避免使用主题类型。 Rx实际上是一种函数式编程范例。 使用主题意味着我们现在正在管理状态,这可能会发生变异。 同时处理变异状态和异步编程很难做到。 此外,许多运算符(扩展方法)都经过精心编写,以确保维护订阅和序列的正确和一致的生命周期; 当你介绍科目时,你可以打破这个。 如果您明确使用主题,未来版本也可能会出现明显的性能下降。

我的应用程序对性能至关重要,我显然会在进入生产代码之前测试使用Rx模式的性能; 但是我担心我正在通过使用Subject类来做违背Rx框架精神的事情,并且该框架的未来版本将损害性能。

有没有更好的方式做我想要的? 无论是否有任何观察者,硬件轮询线程都将连续运行(否则HW缓冲区将备份),因此这是一个非常热门的序列。 然后我需要将收到的帧传递给多个观察者。

任何建议将不胜感激。

trans by 2019-08-12T08:17:41Z

c# - Windows Phone上的Reactive Extensions错误

编译为Crash(),项目类型为WP 8.0,如果未附加调试器,则以下代码将失败。

不知何故,如果没有附加调试器,编译器优化会破坏Crash()中的代码 - 请参阅代码中的注释。

在Lumia 1520(8.1)和Lumia 630(8.0)上测试。

有没有想过为什么会这样?

public partial class MainPage : PhoneApplicationPage
{
    public MainPage()
    {
        InitializeComponent();
        Button.Tap += (sender, args) => new A<B, string>(new B(), "string").Crash();
    }
}
public class B
{
    public void Foo<T>(T val) { }
}
public class A<T1, T2> where T1 : B
{
    private T1 _t1;
    private T2 _t2;
    public A(T1 t1, T2 t2)
    {
        _t2 = t2;
        _t1 = t1;
    }
    public void Crash()
    {
        var obs = Observable.Return(_t2);
        obs.Subscribe(result =>
        {
            //CLR is expecting T2 to be System.String here,
            //but somehow, after passing through Observable
            //T2 here is not a string, it's A<T1, T2>

            new List<T2>().Add(result);
        });
        //Will run normally if commented
        _t1.Foo(new object());
    }
}
trans by 2019-07-02T21:57:44Z

.net - SubscribeOn和ObserveOn之间有什么区别

我刚刚发现SubscribeOn,这让我想知道我是不是应该使用它而不是ObserveOn.谷歌把我带到这里和这里,但它们都没有帮助我理解差异:它似乎非常微妙。

(在我的上下文中,我在非gui线程上发生了'事件',我需要在使用事件数据更新控件之前切换到gui线程)。

trans by 2019-06-22T02:47:37Z

c# - .NET Reactive Fram的良好介绍

除了Microsoft文档之外,Microsoft Reactive(Rx)框架是否有一个很好的介绍和教程?

此外,Reactive使用常规异步编码技术解决难以解决的编程问题更容易成为一个很好的例子(使用代码)?

trans by 2019-03-06T03:46:10Z

1 共1页