void ConnectIfNeeded() { if (sock.IsConnected) { return; } sock.BinaryDataArrived += new TSocket.RawHandler(sock_BinaryDataArrived); sock.XmlDataArrived += new TSocket.DataHandler(sock_XmlDataArrived); sock.Disconnected += (s) => { if (OnError != null) { OnError("Disconnected"); } }; retry: Trace.WriteLine("Connecting to " + Host + ":" + Port); try { sock.Connect(Host, Port); } catch (Exception ex) { Trace.WriteLine(Name + " Connection Failed: " + ex.Message); if (OnError != null) { OnError(ex.Message); } goto retry; } }