public void StartMonitor(string groupKey, List <string> items, string serverID, string host = "127.0.0.1") { JsonArray properties = new JsonArray(); OpcDaService server = GetOpcDaService(host, serverID); if (server == null) { return; } foreach (string item in items) { string md5Str = groupKey + item; if (server.OpcDaGroupS.ContainsKey(md5Str) == false) { OpcDaGroup group = server.Service.AddGroup(md5Str); // maybe cost lot of time group.IsActive = true; server.OpcDaGroupS.Add(md5Str, group); List <OpcDaItemDefinition> itemDefList = new List <OpcDaItemDefinition>(); var def = new OpcDaItemDefinition { ItemId = item, UserData = groupKey, IsActive = true }; itemDefList.Add(def); group.AddItems(itemDefList); groupKeys.Add(md5Str); SetGroupFlag(groupKey, 0); LogHelper.Log("StartMonitoring is groupId " + md5Str + " interval " + "1000 ms", (int)LogHelper.Level.INFO); setItemsCount(groupKey, group); group.UpdateRate = TimeSpan.FromMilliseconds(1000); // 1000毫秒触发一次 group.ValuesChanged += MonitorValuesChanged; if (!groupCollection.ContainsKey(md5Str)) { GroupEntity groupEntity = new GroupEntity() { Host = server.Host, ProgId = server.ServiceId }; groupCollection.Add(md5Str, groupEntity); } LogHelper.Log("groupKeygroupKeygroupKey: " + groupKey); // LogHelper.Log("aaaa: " + GetUnits(group), (int)LogHelper.Level.INFO); } } }