void ReadEvents()
{
do {
try {
string lin;
do {
lin = eventsReader.ReadLine ();
}
while (lin != "[event]" && lin != null);
if (lin == null)
throw new Exception ("Disconnected");
ServerEventArgs args = new ServerEventArgs ();
args.EventId = eventsReader.ReadLine ();
args.AppId = int.Parse (eventsReader.ReadLine ());
args.ProjectId = int.Parse (eventsReader.ReadLine ());
int nargs = int.Parse (eventsReader.ReadLine ());
List<string> eargs = new List<string> ();
for (int n=0; n<nargs; n++)
eargs.Add (eventsReader.ReadLine ());
args.EventArgs = eargs.ToArray ();
if (Event != null)
Event (this, args);
} catch (Exception ex) {
try {
eventsReader.Close ();
} catch { }
Connected = false;
eventsThread = null;
eventsReader = null;
ThreadPool.QueueUserWorkItem (delegate {
if (Disconnected != null)
Disconnected (this, EventArgs.Empty);
});
return;
}
} while (true);
}