void IConnection.Stop() { Trace.TraceInformation("Stop"); if (serverConnessi.Count == 0) { //vuol dire che è avvenuta qualche eccezione quindi i server sono stati già rimossi //per cui aggiorno la lista dei serverConnessi della MainWindow started = false; serverAttivoIndex = -1; EventArgs args = new EventArgs(); EventHandler <EventArgs> handlerRefresh = RefreshConnections; if (handlerRefresh != null) { handlerRefresh(this, args); } return; } //chiudo tutte le connessioni attive while (serverConnessi.Count > 0) { ServerConnection server = serverConnessi[0]; server.Disconnect(); serverConnessi.Remove(server); } started = false; }
void IConnection.Disconnect(int position) { if (serverAttivoIndex == position && serverConnessi.Count > 1 && started) { int indexToActive = position + 1; if (position == serverConnessi.Count - 1) { indexToActive = 0; } ServerConnection serverToDeactive = serverConnessi[serverAttivoIndex]; serverToDeactive.Deactive(); serverToActiveIndex = indexToActive; } Server server = null; ServerConnection curServer = null; server = serverConnessi[position].Server; curServer = serverConnessi[position]; curServer.Disconnect(); Trace.TraceInformation("Server disconnesso. Server: {0}:{1}:{2}", curServer.Server.Name, curServer.Server.IP, curServer.Server.ControlPort); }
private void Disconnect() { _isRunning = false; _connection?.Disconnect(); _listeningThread?.Join(); }