【问题标题】:EventHandler always null within overriden SignalR OnConnected methodEventHandler 在重写的 SignalR OnConnected 方法中始终为空
【发布时间】:2017-03-10 07:36:34
【问题描述】:

我有一个继承自 SignalR Hub 类的类,并且正在覆盖 OnConnected 任务。当客户端连接时, OnConnected 被触发,但我想使用 EventHandler 将其冒泡到处理器类。不幸的是,EventHanlder 始终为空。有什么想法吗?

public class LoadBalancerHub : Hub
{
    public event EventHandler ClientConnected;

    public LoadBalancerHub() : base()
    {
    }

    public override Task OnConnected()
    {
        ClientConnected?.Invoke(this, EventArgs.Empty);

        return base.OnConnected();
    }
}



public class Processor
{
    public LoadBalancerHub Hub;

    public Processor()
    {
        Hub = new LoadBalancerHub();

        Hub.ClientConnected += Hub_ClientConnected;
    }

    private void Hub_ClientConnected(object sender, EventArgs e)
    {
        //do stuff here when event raised
    }
}

【问题讨论】:

  • 集线器似乎由 SignalR 管道管理,并且对于当前请求是瞬态的。请参阅docs.microsoft.com/en-us/aspnet/signalr/overview/… 了解更多信息。你愿意让一个单例在集线器和处理器之间架起桥梁吗?
  • 您需要阅读minimal reproducible example,然后提供给我们一份。
  • IMO 无需进一步说明。不过,感谢您的输入。
  • @StfBln 这绝对是这里的问题。谢谢!写完后我会更新我的解决方案。

标签: c# events signalr


【解决方案1】:

您的代码在我看来是正确的。调试时,处理程序会在这一行中生效吗? Hub.ClientConnected += Hub_ClientConnected;

如果您有多个 LoadBalancerHub 对象,并且触发 OnConnected() 的对象未订阅...

【讨论】:

    猜你喜欢
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多