lightmultimessagereceiver.cs

来自「破解的飞信源代码」· CS 代码 · 共 64 行

CS
64
字号
namespace Imps.Client.Core
{
    using System;
    using System.Runtime.CompilerServices;

    public class LightMultiMessageReceiver
    {
        private object _context;
        private int _counter;
        private int _num;

        public event EventHandler AllMessagesReceived;

        public LightMultiMessageReceiver(int num)
        {
            this._num = num;
            this.Reset();
        }

        protected void OnAllMessagesReceived(EventArgs e)
        {
            EventHandler allMessagesReceived = this.AllMessagesReceived;
            if (allMessagesReceived != null)
            {
                allMessagesReceived(this, e);
            }
        }

        public void ReceiveMessage()
        {
            lock (this)
            {
                if (--this._counter <= 0)
                {
                    this.OnAllMessagesReceived(EventArgs.Empty);
                }
            }
        }

        public void Reset()
        {
            this.Reset(null);
        }

        public void Reset(object context)
        {
            lock (this)
            {
                this._counter = this._num;
                this._context = context;
            }
        }

        public object Context
        {
            get
            {
                return this._context;
            }
        }
    }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?