public override void StartService() { if (_posModel == null) { return; } if (_posModel.IsStart) { if (!OPCServerInstance.IsRunning) { OPCServerInstance.Initialize(_posModel.ServerName, _posModel.License); OnServiceLog("启动OPC服务成功"); } } }
public override void TagValueSubscriber(TagValuePublishedArgs args) { if (_posModel == null || !_posModel.IsStart) { return; } if (!OPCServerInstance.IsRunning) { OnServiceLog("OPC Server 没有启动"); return; } if (TagConfigs.FirstOrDefault(t => t.TagName == args.TagName) != null) { string key = args.TagName; object val = args.NewValue; if (!_cache.ContainsKey(key)) { _cache.TryAdd(key, val); OPCServerInstance.UpdateTag(key, val); } else { object oldValue; if (_cache.TryGetValue(key, out oldValue)) { if (val != oldValue) { _cache.TryUpdate(key, val, oldValue); OPCServerInstance.UpdateTag(key, val); } } } } }