public void Stop() { if (l_server != null) { l_server.Dispose(); } }
/// <summary> /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// </summary> public void Dispose() { if (_server != null) { _server.Dispose(); } GC.SuppressFinalize(this); }
public override void Dispose() { if (!ServiceManager.DesignMode) { //WriteXml(); if (_opcDaServer != null && _opcDaServer.IsConnected) { _opcDaServer.Disconnect(); _opcDaServer.Dispose(); } } }
private Connection CreateConnection(string serverUrl) { ServiceManager.LogMessage("Connecting to {0}...", serverUrl); URL url = new URL(serverUrl); Opc.Da.Server server = null; try { server = new Opc.Da.Server(new OpcCom.Factory(), url); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); try { server.Connect(); Opc.Da.ServerStatus serverStatus = server.GetStatus(); if (serverStatus.ServerState != Opc.Da.serverState.running) { throw new Exception(String.Format("Bad server state ({0})", serverStatus.ServerState)); } Connection connection = new Connection(serverUrl, server); server = null; stopwatch.Stop(); ServiceManager.LogMessage("Successful created new connection {0}: {1} ({2} ms)", connection.GetUID(), serverUrl, stopwatch.ElapsedMilliseconds); Counter counter = counters[serverUrl]; Interlocked.Increment(ref counter.numConnections); return(connection); } catch (Exception ex) { stopwatch.Stop(); ServiceManager.LogMessage("Failed create new connection to {0}: {1} ({2} ms)", serverUrl, ex.Message, stopwatch.ElapsedMilliseconds); throw new FaultException(ex.Message, new FaultCode("E_FAIL")); } } finally { if (server != null) { if (server.IsConnected) { server.Disconnect(); } server.Dispose(); } } }
protected override void OnControlStopRunTime() { if (_status) { _server.Disconnect(); _server.Dispose(); } _status = false; _connectionWorker.CancelAsync(); _repConnectionWorker.CancelAsync(); _timer1.Stop(); _timer1.Dispose(); _timer2.Stop(); _timer2.Dispose(); Trends.Visible = false; //Toolbar.Visible = false; DisplayPanel.Visible = false; //DeleteColumnsDgPla(); _dictionary.Clear(); }
public string[] GetDataType(List <OPCChannelInfo> Subscribed) { string serverName = txtOPCServer.Text; string hostName = txtOPCServerPath.Text; _server = new Server(fact, null) { Url = new URL(hostName + "/" + serverName) }; _server.Connect(); SubscribedCollection = new List <string>(); for (int i = 0; i < Subscribed.Count; i++) { SubscribedCollection.Add(Subscribed[i].channel); } if (SubscriptionOPC == null) { SubscriptionState.Name = "SubscribedGroup"; SubscriptionOPC = (Subscription)_server.CreateSubscription(SubscriptionState); } SubscribedItems = new Item[SubscribedCollection.Count]; for (int i = 0; i < SubscribedCollection.Count; i++) { SubscribedItems[i] = new Item { ItemName = SubscribedCollection[i], SamplingRate = 200, Active = true, ClientHandle = i }; } ItemResult = SubscriptionOPC.AddItems(SubscribedItems); ItemValue[] values = _server.Read(SubscribedItems); int ArraySize = values.Length; if (values[0].Value is Array) { ArraySize = ((Array)values[0].Value).Length - 1; } string[] ReturnValues = new string[ArraySize]; for (int i = 0; i < values.Length; i++) { if (values[i].Value is string) { ReturnValues[i] = "String"; } if (values[i].Value is bool) { ReturnValues[i] = "Bit"; } else if (values[i].Value is byte) { ReturnValues[i] = "Byte"; } else if (values[i].Value is float) { ReturnValues[i] = "Float"; } else if (values[i].Value is char) { ReturnValues[i] = "char"; } else if (values[i].Value is short) { ReturnValues[i] = "Short"; } else if (values[i].Value is int) { ReturnValues[i] = "Int"; } else if (values[i].Value is double) { ReturnValues[i] = "Double"; } else if (values[i].Value is Array) { ReturnValues[i] = "Array"; } else if (values[i].Value is uint) { ReturnValues[i] = "UInt"; } else if (values[i].Value is ushort) { ReturnValues[i] = "UShort"; } //else //{ // ReturnValues[i] = "null"; //} } if (_server != null) { if (_server.IsConnected) { try { _server.Disconnect(); } catch { } } _server.Dispose(); } return(ReturnValues); }