static void Events_WriteItems(object sender, WriteItemsArgs e) { }
static void Events_WriteItems(object sender, WriteItemsArgs e) { GKBase gkBase; for (int i = 0; i < e.Count; i++) { if (e.ItemIds[i].TagId == 0) continue; var tag = Tags.FirstOrDefault(t => t.TagId == e.ItemIds[i].TagId); if (tag == null) { e.Errors[i] = ErrorCodes.False; e.ItemIds[i].TagId = 0; e.MasterError = ErrorCodes.False; continue; } try { var stateCode = Convert.ToInt32(e.Values[i]); var cmd = (Commands)stateCode; gkBase = GKObjects.FirstOrDefault(x => x.UID == tag.UID); if (gkBase == null) { // Необходимо, что бы значение не было записано в тег, // а приходило по обратной связи после выполения команды // throw new CancelWritingException(); e.Errors[i] = ErrorCodes.False; e.ItemIds[i].TagId = 0; e.MasterError = ErrorCodes.False; continue; } else { ExecuteCmd(gkBase, cmd); e.Errors[i] = ErrorCodes.False; e.ItemIds[i].TagId = 0; e.MasterError = ErrorCodes.False; } } catch (Exception ex) { e.Errors[i] = (ErrorCodes)Marshal.GetHRForException(ex); e.ItemIds[i].TagId = 0; e.MasterError = ErrorCodes.False; } } }