Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IHubProxy的On和Subscribe之间的信号器差异_C#_Signalr_Signalr Hub - Fatal编程技术网

C# IHubProxy的On和Subscribe之间的信号器差异

C# IHubProxy的On和Subscribe之间的信号器差异,c#,signalr,signalr-hub,C#,Signalr,Signalr Hub,IHubProxy界面中可用的On和Subscribe方法之间有什么区别。什么时候应该一个使用一个而不是另一个订阅是较低的级别,你真的不应该使用它。On提供了更友好的重载,允许强类型的参数。下面是一个例子: 服务器 客户 订阅模式 public void Main() { var连接=新的HUB连接(“http://myserver"); var proxy=connection.createhubbroxy(“MyHub”); var subscription=proxy.subscripti

IHubProxy
界面中可用的
On
Subscribe
方法之间有什么区别。什么时候应该一个使用一个而不是另一个订阅是较低的级别,你真的不应该使用它。On提供了更友好的重载,允许强类型的参数。下面是一个例子:

服务器 客户 订阅模式
public void Main()
{
var连接=新的HUB连接(“http://myserver");
var proxy=connection.createhubbroxy(“MyHub”);
var subscription=proxy.subscription(“发送”);
subscription.Received+=参数=>
{
字符串名称=null;
智力年龄;
如果(arguments.Count>0)
{
名称=参数[0]。ToObject();
}
如果(arguments.Count>1)
{
年龄=参数[1]。ToObject();
}
WriteLine(“Name{0}和age{1}”,Name,age);
};
}
“On”模式
public void Main()
{
var连接=新的HUB连接(“http://myserver");
var proxy=connection.createhubbroxy(“MyHub”);
proxy.On(“发送”、(姓名、年龄)=>
{
WriteLine(“Name{0}和age{1}”,Name,age);
});
}

我讨厌necro,但这条线让我走上了一条有点黑暗的小巷。事实上,可以使用反应式扩展(Rx)来处理订阅,在许多情况下,这是更可取的,因为它允许合成

一篇足够好的文章来解释基本知识。遗憾的是,代码示例中的格式设置有点糟糕,但您可以做到这一点。

大家好,欢迎来到Stack Overflow!在一个旧帖子上发布一个好的答案是可以的(如果你还没有,请查看),但是你应该在你的答案中引用链接的相关部分,以防链接出现问题。我会的,但是如果你读了相关的文章,引用它会占用很多空间;)如果你读到“鼓励链接到外部资源,但请在链接周围添加上下文,这样你的其他用户就会知道它是什么以及为什么会在那里。请始终引用重要链接中最相关的部分,以防目标站点无法访问或永久脱机。”总结这篇博文并不太长——即使只是添加一个比较,也会使这个答案更具实质性。占用空间是好的,如果它用于高质量的信息!
public class MyHub
{
    public void Send(string message, int age)
    {
        Clients.All.send(message, age);
    }
}
public void Main()
{
    var connection = new HubConnection("http://myserver");
    var proxy = connection.CreateHubProxy("MyHub");

    var subscription = proxy.Subscribe("send");
    subscription.Received += arguments =>
    {
        string name = null;
        int age;
        if (arguments.Count > 0)
        {
            name = arguments[0].ToObject<string>();
        }

        if (arguments.Count > 1)
        {
            age = arguments[1].ToObject<int>();
        }

        Console.WriteLine("Name {0} and age {1}", name, age);
    };
}
public void Main()
{
    var connection = new HubConnection("http://myserver");
    var proxy = connection.CreateHubProxy("MyHub");

    proxy.On<string, int>("send", (name, age) =>
    {
        Console.WriteLine("Name {0} and age {1}", name, age);
    });
}