public void DoTask(uint devid, DevCarrierTaskE carriertask, bool isoversize = false) { if (Monitor.TryEnter(_obj, TimeSpan.FromSeconds(2))) { try { CarrierTask task = DevList.Find(c => c.ID == devid); if (task != null) { if (task.OperateMode == DevOperateModeE.自动) { if (task.Status == DevCarrierStatusE.停止 && task.Task == carriertask && task.FinishTask == carriertask) { carriertask = DevCarrierTaskE.终止; } } else { carriertask = DevCarrierTaskE.终止; } task.DoTask(carriertask, isoversize ? DevCarrierSizeE.超限 : DevCarrierSizeE.非超限); } } finally { Monitor.Exit(_obj); } } }
/// <summary> /// 判断小车是否处于任务 /// </summary> /// <param name="carrier_id"></param> /// <param name="carriertask"></param> /// <returns></returns> internal bool IsTaskAndDoTask(uint carrier_id, DevCarrierTaskE carriertask) { CarrierTask task = DevList.Find(c => c.ID == carrier_id); if (task != null) { if (task.Task == carriertask && task.FinishTask == DevCarrierTaskE.终止) { return(true); } task.DoTask(carriertask, DevCarrierSizeE.非超限); } return(false); }