Exemple #1
0
        /// <summary>
        ///     注册一个消息处理器
        /// </summary>
        /// <param name="protocol">消息处理协议</param>
        /// <param name="processor">处理器</param>
        /// <exception cref="ArgumentNullException">参数不能为空</exception>
        public IRequestScheduler <BaseMessage> Regist(Protocols protocol, IMessageProcessor processor)
        {
            if (processor == null)
            {
                throw new ArgumentNullException(nameof(processor));
            }
            ProcessorObject p;

            lock (_processorLockObj)
            {
                if (_processors.TryGetValue(protocol, out p))
                {
                    return(this);
                }
                p = new ProcessorObject {
                    Processor = processor
                };
                _processors.Add(protocol, p);
                return(this);
            }
        }
        // Get processors
        /// <summary>
        /// Gets a list of processors
        /// </summary>
        /// <returns>A list of ProcessorObjects</returns>
        public List<ProcessorObject> GetProcessors()
        {
            List<ProcessorObject> Processors = new List<ProcessorObject>();
            ManagementObjectSearcher Query = new ManagementObjectSearcher("SELECT * FROM Win32_Processor");
            ManagementObjectCollection Collection = Query.Get();
            foreach (ManagementObject MO in Collection)
            {
                ProcessorObject Processor = new ProcessorObject();

                Try(() =>
                    Processor.device_identifier = MO["DeviceID"].ToString());
                Try(() =>
                    Processor.manufacturer.detection_string = MO["Manufacturer"].ToString());
                Try(() =>
                    Processor.model.clock_speed = Math.Round(Convert.ToDouble(MO["CurrentClockSpeed"].ToString()) / 1000, 1).ToString());
                Try(() =>
                    Processor.model.cores = MO["NumberOfCores"].ToString());
                Try(() =>
                    Processor.model.threads = MO["NumberOfLogicalProcessors"].ToString());
                Try(() =>
                    Processor.model.max_clock_speed = Math.Round(Convert.ToDouble(MO["MaxClockSpeed"].ToString()) / 1000, 1).ToString());
                Try(() =>
                    Processor.model.detection_string = MO["Name"].ToString());
                Try(() =>
                    Processor.model.data_width = MO["DataWidth"].ToString());
                Try(() =>
                    Processor.family.architecture.detection_string = MO["Architecture"].ToString());
                Try(() =>
                    Processor.family.detection_string = MO["Family"].ToString());

                Processors.Add(Processor);
            }
            return Processors;
        }