/// <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; }