【问题标题】:What is the meaning of this Code in the Constructor构造函数中这段代码是什么意思
【发布时间】:2015-02-11 09:28:08
【问题描述】:

我正在尝试 ASP.Net Signalr 示例。在示例中,这里是一个代码,用于提高集线器中的信号器性能服务器端。

这是代码..

        public class Broadcaster
        {
            private readonly static Lazy<Broadcaster> _instance =
                new Lazy<Broadcaster>(() => new Broadcaster());
            // We're going to broadcast to all clients a maximum of 25 times per second
            private readonly TimeSpan BroadcastInterval =
                TimeSpan.FromMilliseconds(40);
            private readonly IHubContext _hubContext;
            private Timer _broadcastLoop;
            private ShapeModel _model;
            private bool _modelUpdated;
            public Broadcaster()
            {
                // Save our hub context so we can easily use it 
                // to send to its connected clients
                _hubContext = GlobalHost.ConnectionManager.GetHubContext<MoveShapeHub>();
                _model = new ShapeModel();
                _modelUpdated = false;
                // Start the broadcast loop
                _broadcastLoop = new Timer(
                    BroadcastShape,
                    null,
                    BroadcastInterval,
                    BroadcastInterval);
            }
            public void BroadcastShape(object state)
            {
                // No need to send anything if our model hasn't changed
                if (_modelUpdated)
                {
                    // This is how we can access the Clients property 
                    // in a static hub method or outside of the hub entirely
                    _hubContext.Clients.AllExcept(_model.LastUpdatedBy).updateShape(_model);
                    _modelUpdated = false;
                }
            }
            public void UpdateShape(ShapeModel clientModel)
            {
                _model = clientModel;
                _modelUpdated = true;
            }
            public static Broadcaster Instance
            {
                get
                {
                    return _instance.Value;
                }
            }
        }

        public class MoveShapeHub : Hub
        {
            // Is set via the constructor on each creation
            private Broadcaster _broadcaster;
            public MoveShapeHub()
                : this(Broadcaster.Instance)
            {
            }
            public MoveShapeHub(Broadcaster broadcaster)
            {
                _broadcaster = broadcaster;
            }
            public void UpdateModel(ShapeModel clientModel)
            {
                clientModel.LastUpdatedBy = Context.ConnectionId;
                // Update the shape model within our broadcaster
                _broadcaster.UpdateShape(clientModel);
            }
        }




    public class ShapeModel
    {
        // We declare Left and Top as lowercase with 
        // JsonProperty to sync the client and server models
        [JsonProperty("left")]
        public double Left { get; set; }
        [JsonProperty("top")]
        public double Top { get; set; }
        // We don't want the client to get the "LastUpdatedBy" property
        [JsonIgnore]
        public string LastUpdatedBy { get; set; }
    }

我有一个问题,这条线是什么意思..

 public MoveShapeHub()
                : this(Broadcaster.Instance)
            {
            }

它说 在每次创建时通过构造函数设置

这是什么意思?还有其他写法吗???

【问题讨论】:

  • stackoverflow.com/questions/4009013/…(将答案读作问题,将问题读作答案)
  • 评论似乎是针对该字段的,而不是针对构造函数的。 this(..) 只是调用另一个构造函数。是您有疑问的评论还是this 电话?或Broadcast.Instance?
  • 你们是否认真地每 40 毫秒向所有客户端广播?用例是什么?

标签: c# asp.net class constructor signalr


【解决方案1】:

此语法调用您类中的另一个构造函数。 这意味着这样的调用:

public MoveShapeHub() : this(Broadcaster.Instance) {}

会调用这个构造函数

public MoveShapeHub(Broadcaster broadcaster)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多