diff --git a/src/Backend.cs b/src/Backend.cs index 433e674..98a5cd3 100644 --- a/src/Backend.cs +++ b/src/Backend.cs @@ -135,8 +135,7 @@ namespace WorldOfPeacecraft public void Stop() { Parse.Stop (); Send.Stop (); - Rec.Stop (); - System.Windows.Forms.Application.Exit (); + Client.Close (); } } } diff --git a/src/Parser.cs b/src/Parser.cs index 34a8ffd..6ae15a6 100644 --- a/src/Parser.cs +++ b/src/Parser.cs @@ -465,6 +465,7 @@ namespace WorldOfPeacecraft public void Stop () { ParserThread.Abort (); + ParserThread.Join (); } private class Block diff --git a/src/Receiver.cs b/src/Receiver.cs index 82a9851..d5c25e0 100644 --- a/src/Receiver.cs +++ b/src/Receiver.cs @@ -27,8 +27,12 @@ namespace WorldOfPeacecraft private void doReceive () { this.Reader = new StreamReader (Client.GetStream ()); - while (true) { - ReceiverBuffer.AddLine(Receive()); + try { + while (true) { + ReceiverBuffer.AddLine (Receive ()); + } + } catch (ObjectDisposedException e) { + // Nothing to do } } @@ -36,10 +40,5 @@ namespace WorldOfPeacecraft { ReceiverThread.Start (); } - - public void Stop() - { - ReceiverThread.Abort (); - } } } diff --git a/src/Sender.cs b/src/Sender.cs index 9453498..eb16001 100644 --- a/src/Sender.cs +++ b/src/Sender.cs @@ -41,6 +41,7 @@ namespace WorldOfPeacecraft public void Stop() { SenderThread.Abort(); + SenderThread.Join(); } } } \ No newline at end of file