| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- using System;
- using SHJX.Service.Common.ReadXML;
- using SHJX.Service.Control.Interface;
- using System.Collections.Concurrent;
- using SHJX.Service.Common.Logging;
- using Microsoft.Extensions.Logging;
- namespace SHJX.Service.Control.TimerControl.ChangeTaskState
- {
- public class ChangeStateFactory
- {
- private static readonly ILogger logger = LogFactory.BuildLogger(typeof(ChangeStateFactory));
- private readonly ReadConfigUtil _config;
- private readonly ConcurrentDictionary<string, ChangeTaskStateImp> _writeTasks = new ConcurrentDictionary<string, ChangeTaskStateImp>();
- public ChangeStateFactory( ReadConfigUtil config)
- {
- _config = config;
- }
- /// <summary>
- /// 获取任务下发类
- /// </summary>
- /// <param name="opKey"></param>
- /// <returns></returns>
- public ChangeTaskStateImp Get(string opKey)
- {
- try
- {
- if (_writeTasks.TryGetValue(opKey, out var writeTask))
- return writeTask;
- ChangeTaskStateImp writeTaskOperate = opKey switch
- {
- "Sample" => new SampleChangeState(_config), //样品
- "Calibration" => new CalibrationChangeState(_config), //标定
- "Wash" => new WashChangeState(_config), //润洗
- _ => throw new ArgumentNullException()
- };
- _writeTasks.TryAdd(opKey, writeTaskOperate);
- return writeTaskOperate;
- }
- catch (Exception ex)
- {
- logger.LogError(ex.ToString());
- return null;
- }
- }
- }
- }
|