/// <summary> /// Updates current connection status /// </summary> /// <param name="status"></param> /// <param name="x"></param> protected void SetConnectionStatus(ConnectionStatus status, Exception x = null) { var old = ConnectionStatus; if (ConnectionStatus == status) { return; } var ea = new ConnectionStatusEventArgs { Status = status, Previous = old, Exception = x }; ConnectionStatus = status; OnConnectionStatusChanged(ea); if (x != null) { Logger.Error("TcpConnection disconnected by error: {0} {1} {2}", RemoteAddress, x.Message, x.StackTrace); } if (ConnectionStatus == ConnectionStatus.Disconnected) { Dispose(); } }
void connection_ConnectionStatusChanged(object sender, ConnectionStatusEventArgs e) { var connection = (HyperServerConnection)sender; if (e.Status == ConnectionStatus.Disconnected) { Logger.Info("Session connection closed {0} {1}", SessionToken, connection.RemoteAddress); lock (_controlConnections) lock (_transferConnections) { if (connection.IsControl) { _controlConnections.Remove(connection); connection.SegmentRequested -= connection_SegmentRequested; if (_controlConnections.Count == 0) { Logger.Info("No more control connections alive"); } } else { _transferConnections.Remove(connection); } if (_controlConnections.Count == 0 && _transferConnections.Count == 0) { OnClosed(); } } connection.ConnectionStatusChanged -= connection_ConnectionStatusChanged; } }
internal void QueueRobustConnectionNotification(int flags) { ConnectionStatusEventArgs privateData = null; switch (flags) { case 0x400: privateData = new ConnectionStatusEventArgs(ConnectionStatus.ConnectionRetrySucceeded); break; case 0x800: privateData = new ConnectionStatusEventArgs(ConnectionStatus.AutoDisconnectStarting); break; case 0x1000: privateData = new ConnectionStatusEventArgs(ConnectionStatus.InternalErrorAbort); break; case 0x40: privateData = new ConnectionStatusEventArgs(ConnectionStatus.AutoDisconnectSucceeded); break; case 0x100: privateData = new ConnectionStatusEventArgs(ConnectionStatus.NetworkFailureDetected); break; case 0x200: privateData = new ConnectionStatusEventArgs(ConnectionStatus.ConnectionRetryAttempt); break; } this.EnqueueAndStartProcessingThread(null, null, privateData); }
/// <summary> /// Called on connection status change /// </summary> /// <param name="e"></param> protected override void OnConnectionStatus(ConnectionStatusEventArgs e) { if (e.Status == ConnectionStatus.Connected || e.OldStatus == ConnectionStatus.Connecting) { lock (e.Connection.Accounts) foreach (Account account in e.Connection.Accounts) { if (account.Name == AccountName) { lock (account.Positions) foreach (Position positionTmp in account.Positions) { if (positionTmp.Instrument.IsEqual(Instrument)) { position = positionTmp; } } } } } else if (e.Status == ConnectionStatus.Disconnected) { if (position != null && position.Account.Connection == e.Connection) { position = null; Value = 0; } } }
/// <summary> /// Track reverse connection status. /// </summary> protected override void OnConnectionStatusChanged(object sender, ConnectionStatusEventArgs e) { lock (m_connections) { ReverseConnectProperty reverseConnection = null; if (m_connections.TryGetValue(e.EndpointUrl, out reverseConnection)) { ServiceResult priorStatus = reverseConnection.ServiceResult; if (ServiceResult.IsBad(e.ChannelStatus)) { reverseConnection.ServiceResult = e.ChannelStatus; if (e.ChannelStatus.Code == StatusCodes.BadTcpMessageTypeInvalid) { reverseConnection.State = ReverseConnectState.Rejected; reverseConnection.RejectTime = DateTime.UtcNow; Utils.Trace($"Client Rejected Connection! [{reverseConnection.State}][{e.EndpointUrl}]"); return; } else { reverseConnection.State = ReverseConnectState.Closed; Utils.Trace($"Connection Error! [{reverseConnection.State}][{e.EndpointUrl}]"); return; } } reverseConnection.State = e.Closed ? ReverseConnectState.Closed : ReverseConnectState.Connected; Utils.Trace($"New Connection State! [{reverseConnection.State}][{e.EndpointUrl}]"); } else { Utils.Trace($"Warning: Status changed for unknown connection: [{e.ChannelStatus}][{e.EndpointUrl}]"); } } }
protected override void OnConnectionStatusUpdate(ConnectionStatusEventArgs connectionStatusUpdate) { if (connectionStatusUpdate.Status == ConnectionStatus.Connected) { Print("observed Connected at " + DateTime.Now); priceData.connectStatus = "Connected"; priceData.connectTime = DateTime.Now.ToShortTimeString(); conMessage = "Connected"; conTime = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); updateConnection(); } else if (connectionStatusUpdate.Status == ConnectionStatus.ConnectionLost) { Print("observed Connection lost at: " + DateTime.Now); priceData.connectStatus = "Connection lost"; priceData.connectTime = DateTime.Now.ToShortTimeString(); conMessage = priceData.connectStatus; conTime = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); updateConnection(); } else if (connectionStatusUpdate.Status == ConnectionStatus.Disconnected) { Print("observed Disconnected at: " + DateTime.Now); priceData.connectStatus = "Disconnected"; priceData.connectTime = DateTime.Now.ToShortTimeString(); conMessage = priceData.connectStatus; conTime = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); updateConnection(); } }
private void TransferConnectionStatusChanged(object sender, ConnectionStatusEventArgs e) { if (e.Status == ConnectionStatus.Disconnected) { var transfer = (TransferConnection)sender; lock (_synRoot) { _connections.Remove(transfer); if (transfer.Direction == TransferDirection.Upload) { _uploadThreadsCount--; } if (transfer.Direction == TransferDirection.Download) { _downloadThreadsCount--; } } transfer.ConnectionStatusChanged -= TransferConnectionStatusChanged; transfer.UploadItemNeeded -= TransferUploadItemNeededHandler; transfer.UploadItemDispose -= TransferUploadItemDisposeHandler; transfer.DirectionChanged -= TransferDirectionChanged; transfer.DownloadItemNeeded -= TransferDownloadItemNeeded; transfer.Authorization -= TransferAuthorizationHandler; transfer.Error -= TransferError; transfer.SlotRequest -= TransferSlotRequest; OnTransferRemoved(new TransferEventArgs { Transfer = transfer, Exception = e.Exception }); } }
/// <summary> /// Called on connection status change /// </summary> /// <param name="e"></param> protected override void OnConnectionStatus(ConnectionStatusEventArgs e) { if (e.Status == ConnectionStatus.Connected || e.OldStatus == ConnectionStatus.Connecting) { lock (e.Connection.Accounts) foreach (Account account in e.Connection.Accounts) { if (account.Name == AccountName) { Value = 0; lock (account.Executions) foreach (Execution execution in account.Executions) { if (execution.Instrument.IsEqual(Instrument) && execution.Time.Date == DateTime.Now.Date) { Value += execution.Quantity; } } } } } else if (e.Status == ConnectionStatus.Disconnected) { lock (e.Connection.Accounts) foreach (Account account in e.Connection.Accounts) { if (account.Name == AccountName) { Value = 0; } } } }
protected override void OnConnectionStatusUpdate(ConnectionStatusEventArgs connectionStatusUpdate) { if (connectionStatusUpdate.PriceStatus == ConnectionStatus.Connected && connectionStatusUpdate.Connection.InstrumentTypes.Contains(Instrument.MasterInstrument.InstrumentType) && Bars.BarsType.IsTimeBased && Bars.BarsType.IsIntraday) { connected = true; if (DisplayTime() && timer == null) { ChartControl.Dispatcher.InvokeAsync(() => { timer = new System.Windows.Threading.DispatcherTimer { Interval = new TimeSpan(0, 0, 1), IsEnabled = true }; timer.Tick += OnTimerTick; }); } } else if (connectionStatusUpdate.PriceStatus == ConnectionStatus.Disconnected) { connected = false; } }
//private void OnScreenOnListening() //{ // if (connection != null && agent != null && agent.Channels.Count > 0) // { // if (isPlaying) // { // audioPlayer.Stop(); // isPlaying = false; // } // else // { // feedback.Play(FeedbackType.Sound, "Tap"); // audioRecorder.StartRecording(); // actionButton.IsEnable = false; // } // } //} private void Connection_StatusChanged(object sender, ConnectionStatusEventArgs e) { if (e.Reason == ConnectionStatus.ConnectionClosed || e.Reason == ConnectionStatus.ConnectionLost || e.Reason == ConnectionStatus.Unknown) { ShowMessage("Lost connection, will try to reconnect in 3 seconds"); if (audioRecorder.isRecording) { audioRecorder.StopRecording(); audioRecorder.isRecording = false; } if (isPlaying) { audioPlayer.Stop(); isPlaying = false; } actionButton.IsEnable = false; connection.DataReceived -= Connection_DataReceived; connection.StatusChanged -= Connection_StatusChanged; connection.Close(); connection = null; peer = null; agent = null; reconnectTimer.Start(); } }
/// <summary> /// Called on connection status change /// </summary> /// <param name="e"></param> protected override void OnConnectionStatus(ConnectionStatusEventArgs e) { Value = 0; lock (Cbi.Globals.Connections) foreach (Connection connection in Cbi.Globals.Connections) { if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost) { lock (connection.Accounts) foreach (Account account in connection.Accounts) { if (account.Name == AccountName) { executions.Clear(); lock (account.Executions) foreach (Execution tmp in account.Executions) { if (tmp.Instrument.IsEqual(Instrument)) { executions.Add(tmp); } } Value = Strategy.SystemPerformance.Calculate(executions, Cbi.Commission.ApplyCommissionToProfitLoss).AllTrades.TradesPerformance.Currency.CumProfit; } } } } }
/// <summary> /// Called on connection status change /// </summary> /// <param name="e"></param> protected override void OnConnectionStatus(ConnectionStatusEventArgs e) { if (e.Status == ConnectionStatus.Connected || e.OldStatus == ConnectionStatus.Connecting) { lock (e.Connection.Accounts) foreach (Account account in e.Connection.Accounts) { if (account.Name == AccountName) { lock (account.Positions) foreach (Position positionTmp in account.Positions) { if (positionTmp.Instrument.IsEqual(Instrument)) { position = positionTmp; } } } } } else if (e.Status == ConnectionStatus.Disconnected) { if (position != null && position.Account.Connection == e.Connection) { position = null; unrealizedPL = 0; Value = 0; } } realizedPL = 0; lock (Cbi.Globals.Connections) foreach (Connection connection in Cbi.Globals.Connections) { if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost) { lock (connection.Accounts) foreach (Account account in connection.Accounts) { if (account.Name == AccountName) { executions.Clear(); lock (account.Executions) foreach (Execution tmp in account.Executions) { if (tmp.Instrument.IsEqual(Instrument)) { executions.Add(tmp); } } realizedPL = Strategy.SystemPerformance.Calculate(executions, Cbi.Commission.ApplyCommissionToProfitLoss).AllTrades.TradesPerformance.Currency.CumProfit; } } } } Value = realizedPL + unrealizedPL; }
/// <exception cref="Exception">A delegate callback throws an exception. </exception> protected virtual void OnStatusChanged(object sender, ConnectionStatusEventArgs e) { var statusChanged = StatusChanged; if (statusChanged != null) { statusChanged(sender, e); } }
private void OnStatusUpdate(object sender, ConnectionStatusEventArgs e) { EventHandler <ConnectionStatusEventArgs> handler = StatusUpdate; if (handler != null) { handler(this, e); } }
private void OnConnectionStatus(object sender, ConnectionStatusEventArgs e) { if (lblSystemStatus.InvokeRequired) { lblSystemStatus.Invoke(new Action <bool>(SetStatus), e.IsConnected); return; } SetStatus(e.IsConnected); }
void connection_ConnectionStatusChanged(object sender, ConnectionStatusEventArgs e) { var connection = (HyperServerConnection)sender; if (e.Status == ConnectionStatus.Disconnected) { lock (_unknownConnections) _unknownConnections.Remove(connection); Logger.Info("Unknown connection is disconnected"); } }
private void OnConnectionStatusChanged(object sender, ConnectionStatusEventArgs args) { if (args.Action == AccountConnectionStatus.Connected) { if (conn_map.ContainsKey(args.AccountObjectPath)) { RemoveConnection(args.AccountObjectPath); } CreateConnection(args.BusName, args.ObjectPath, args.AccountId, args.AccountObjectPath); } }
/// <summary> /// Called on connection status change /// </summary> /// <param name="e"></param> protected override void OnConnectionStatus(ConnectionStatusEventArgs e) { Value = 0; BackColor = Color.Empty; // reset color lock (Cbi.Globals.Connections) foreach (Connection connection in Cbi.Globals.Connections) if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost) lock (connection.Accounts) foreach (Account account in connection.Accounts) if (account.Name == AccountName && account.Positions.FindByInstrument(Instrument) != null) Value = account.Positions.FindByInstrument(Instrument).AvgPrice; }
void HyperConnection_ConnectionStatusChanged(object sender, ConnectionStatusEventArgs e) { if (e.Status == ConnectionStatus.Disconnected) { _tail = null; if (_tempBuffer.Object != null) { _tempBuffer.Dispose(); _tempBuffer = new ReusableObject <byte[]>(); } } }
private void Imatch_ConnectionStatusChanged(object sender, ConnectionStatusEventArgs e) { Connected = iMatch.IsConnected; if (Connected) { MessageList.Add("Connected to " + e.DeviceName); } else { MessageList.Add("Disconnected"); } }
private void DispatchConnectionStatusChanged(object sender, ConnectionStatusEventArgs e) { if (ConnectionStatusChanged != null) { try { ConnectionStatusChanged(this, e); } catch (Exception ex) { Trace.TraceError("Exception thrown dispatch", ex); } } }
private void HandleRobustConnectionNotification(object sender, ConnectionStatusEventArgs e) { List <ClientPowerShellDataStructureHandler> list; lock (this.associationSyncObject) { list = new List <ClientPowerShellDataStructureHandler>(this.associatedPowerShellDSHandlers.Values); } foreach (ClientPowerShellDataStructureHandler handler in list) { handler.ProcessRobustConnectionNotification(e); } }
private void HttpConnector_ConnectionStateChnged(object sender, ConnectionStatusEventArgs e) { /*try * { * Invoke(new Action(() => * { * Text += $" - {e.IsRaspberryAvailable}/{HttpConnector.RaspberryIPAdderssAsync()}"; * })); * } * catch * { * return; * }*/ }
private static void Connection_StatusChanged(object sender, ConnectionStatusEventArgs e) { Toast.DisplayText(e.Reason.ToString()); if (e.Reason == ConnectionStatus.ConnectionClosed || e.Reason == ConnectionStatus.ConnectionLost) { connection.DataReceived -= Connection_DataReceived; connection.StatusChanged -= Connection_StatusChanged; connection.Close(); connection = null; peer = null; } }
void serverConnection_ConnectionStatusChanged(object sender, ConnectionStatusEventArgs status) { logger.Info("ConnectionStatus: {0}", status.ConnectionStatus.ToString()); if (status.ConnectionStatus == ConnectionStatus.DisconnectedByHost) { pollTimer.Stop(); bIsFirst = true; // Make Sure login again } if (status.ConnectionStatus == ConnectionStatus.Connected) { LineManager.Init(this); pollTimer.Start(); } }
/// <summary> /// Called on connection status change /// </summary> /// <param name="e"></param> protected override void OnConnectionStatus(ConnectionStatusEventArgs e) { Value = 0; BackColor = Color.Empty; // reset color lock (Cbi.Globals.Connections) foreach (Connection connection in Cbi.Globals.Connections) if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost) lock (connection.Accounts) foreach (Account account in connection.Accounts) if (account.Name == AccountName && account.Positions.FindByInstrument(Instrument) != null) { Cbi.Position position = account.Positions.FindByInstrument(Instrument); Value = (position.MarketPosition == MarketPosition.Long ? 1 : -1) * position.Quantity; } }
// Metodi, jota kutsutaan kun yhteyden tila muuttuu. Lopuksi nostetaan event, jolla ilmoitetaan tässä tapauksessa yhteyden tilan muuttumisesta toimintalogiikalle private void YhteydenTilaMuuttui(object source, ConnectionStatusEventArgs args) { ConnectionStatusInfo muuttunutYhteydenTila = args.StatusInfo; yhteydenTila = muuttunutYhteydenTila.FullStatusString; if (yhteydenTila == null) { yhteydenTila = "Unknown"; } // Jos yhteys katkeaa tai simulaattori suljetaan ohjelman ollessa käynnissä, poistetaan asiakas-client ja muutetaan initKutsuttu alkuarvoonsa if (yhteydenTila == "ConnectionErrorClientReconnect") { asiakas.Dispose(); initKutsuttu = false; } YhteysMuuttui(yhteydenTila); }
private void OnStatusUpdate(int ph, ConnectionStatus status, string message) { if (!CheckPhase(ph)) { return; } var statusUpdate = StatusUpdate; if (statusUpdate == null) { return; } var e = new ConnectionStatusEventArgs(message, status); statusUpdate(this, e); }
/// <summary> /// Called on connection status change /// </summary> /// <param name="e"></param> protected override void OnConnectionStatus(ConnectionStatusEventArgs e) { Value = 0; lock (Cbi.Globals.Connections) foreach (Connection connection in Cbi.Globals.Connections) if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost) lock (connection.Accounts) foreach (Account account in connection.Accounts) if (account.Name == AccountName) { executions.Clear(); lock (account.Executions) foreach (Execution tmp in account.Executions) if (tmp.Instrument.IsEqual(Instrument)) executions.Add(tmp); Value = Strategy.SystemPerformance.Calculate(executions, Cbi.Commission.ApplyCommissionToProfitLoss).AllTrades.TradesPerformance.Currency.CumProfit; } }
/// <summary> /// Called on connection status change /// </summary> /// <param name="e"></param> protected override void OnConnectionStatus(ConnectionStatusEventArgs e) { Value = 0; BackColor = Color.Empty; // reset color lock (Cbi.Globals.Connections) foreach (Connection connection in Cbi.Globals.Connections) { if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost) { lock (connection.Accounts) foreach (Account account in connection.Accounts) { if (account.Name == AccountName && account.Positions.FindByInstrument(Instrument) != null) { Value = account.Positions.FindByInstrument(Instrument).AvgPrice; } } } } }
private void Connection_StatusChanged(object sender, ConnectionStatusEventArgs e) { if (e.Reason == ConnectionStatus.Connected) { IsConnected = true; TextPopUp.Dismiss(); _onConnectedCallback(); if (responseHandler == null) { responseHandler = new ResponseHandler(); } } if (e.Reason == ConnectionStatus.ConnectionClosed || e.Reason == ConnectionStatus.ConnectionLost || e.Reason == ConnectionStatus.Unknown) { IsConnected = false; _connection.Dispose(); TextPopUp.Text = "Connection lost. Trying to reconnect in 5s."; TextPopUp.Show(); MainPage.SetActionButtonIsEnabled(false); MainPage.SetButtonImage("listen_disabled_allgreyedout.png"); if (AudioRecorder.IsRecording) { AudioRecorder.StopRecording(); } //if (AudioPlayer.IsPlaying) //{ // AudioPlayer.Stop(); //} _connection.DataReceived -= Connection_DataReceived; _connection.StatusChanged -= Connection_StatusChanged; _connection.Close(); _connection = null; _peer = null; _agent = null; _reconnectTimer.Start(); } }
/// <summary> /// Called on connection status change /// </summary> /// <param name="e"></param> protected override void OnConnectionStatus(ConnectionStatusEventArgs e) { if (e.Status == ConnectionStatus.Connected || e.OldStatus == ConnectionStatus.Connecting) { lock (e.Connection.Accounts) foreach (Account account in e.Connection.Accounts) if (account.Name == AccountName) lock (account.Positions) foreach (Position positionTmp in account.Positions) if (positionTmp.Instrument.IsEqual(Instrument)) position = positionTmp; } else if (e.Status == ConnectionStatus.Disconnected) { if (position != null && position.Account.Connection == e.Connection) { position = null; unrealizedPL = 0; Value = 0; } } realizedPL = 0; lock (Cbi.Globals.Connections) foreach (Connection connection in Cbi.Globals.Connections) if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost) lock (connection.Accounts) foreach (Account account in connection.Accounts) if (account.Name == AccountName) { executions.Clear(); lock (account.Executions) foreach (Execution tmp in account.Executions) if (tmp.Instrument.IsEqual(Instrument)) executions.Add(tmp); realizedPL = Strategy.SystemPerformance.Calculate(executions, Cbi.Commission.ApplyCommissionToProfitLoss).AllTrades.TradesPerformance.Currency.CumProfit; } Value = realizedPL + unrealizedPL; }
/// <summary> /// Called on connection status change /// </summary> /// <param name="e"></param> protected override void OnConnectionStatus(ConnectionStatusEventArgs e) { if (e.Status == ConnectionStatus.Connected || e.OldStatus == ConnectionStatus.Connecting) { lock (e.Connection.Accounts) foreach (Account account in e.Connection.Accounts) if (account.Name == AccountName) lock (account.Positions) foreach (Position positionTmp in account.Positions) if (positionTmp.Instrument.IsEqual(Instrument)) position = positionTmp; } else if (e.Status == ConnectionStatus.Disconnected) { if (position != null && position.Account.Connection == e.Connection) { position = null; Value = 0; } } }
/// <summary> /// Called on connection status change /// </summary> /// <param name="e"></param> protected override void OnConnectionStatus(ConnectionStatusEventArgs e) { Value = 0; BackColor = Color.Empty; // reset color lock (Cbi.Globals.Connections) foreach (Connection connection in Cbi.Globals.Connections) { if (connection.Status == ConnectionStatus.Connected || connection.Status == ConnectionStatus.ConnectionLost) { lock (connection.Accounts) foreach (Account account in connection.Accounts) { if (account.Name == AccountName && account.Positions.FindByInstrument(Instrument) != null) { Cbi.Position position = account.Positions.FindByInstrument(Instrument); Value = (position.MarketPosition == MarketPosition.Long ? 1 : -1) * position.Quantity; } } } } }
public void ReaderStatusHandler(ConnectionStatusEventArgs args) { if (args.Type == DeviceType.MAIN) { _registrationViewModel.MainReaderStatus = args.GetStatusDescription(); _registrationViewModel.MainReaderIp = args.GetHumanReadableIp(); //if (args.Status == DeviceStatus.Connected) //{ // _mainReader.TagCatchEvent += MainReaderTagCatchHandler; // _mainReader.StartListening(); //} } if (args.Type == DeviceType.PORTABLE) { _registrationViewModel.PortableReaderStatus = args.GetStatusDescription(); _registrationViewModel.PortableReaderPort = args.GetConnectionPort(); _registrationViewModel.PortableReaderDeviceStatus = args.Status; } }
/// <summary> /// Called on connection status change /// </summary> /// <param name="e"></param> protected override void OnConnectionStatus(ConnectionStatusEventArgs e) { if (e.Status == ConnectionStatus.Connected || e.OldStatus == ConnectionStatus.Connecting) { lock (e.Connection.Accounts) foreach (Account account in e.Connection.Accounts) if (account.Name == AccountName) { Value = 0; lock (account.Executions) foreach (Execution execution in account.Executions) if (execution.Instrument.IsEqual(Instrument) && execution.Time.Date == DateTime.Now.Date) Value += execution.Quantity; } } else if (e.Status == ConnectionStatus.Disconnected) { lock (e.Connection.Accounts) foreach (Account account in e.Connection.Accounts) if (account.Name == AccountName) Value = 0; } }
private void OnConnectionStatusChanged (object sender, ConnectionStatusEventArgs args) { if (args.Action == AccountConnectionStatus.Connected) { if (conn_map.ContainsKey (args.AccountObjectPath)) { RemoveConnection (args.AccountObjectPath); } CreateConnection (args.BusName, args.ObjectPath, args.AccountId, args.AccountObjectPath); } }
protected virtual void OnConnectionStatusChanged(ConnectionStatusEventArgs args) { EventHandler <ConnectionStatusEventArgs> handler = ConnectionStatusChanged; if (handler != null) { handler (this, args); } }