Threads werden nicht mehr im Konstruktor gestartet, um race conditions zu
vermeiden
This commit is contained in:
@@ -112,6 +112,12 @@ namespace WorldOfPeacecraft
|
|||||||
Gui.PerformRefresh();
|
Gui.PerformRefresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void StartThreads() {
|
||||||
|
Parse.Start ();
|
||||||
|
Rec.Start ();
|
||||||
|
Send.Start ();
|
||||||
|
}
|
||||||
|
|
||||||
public void Stop() {
|
public void Stop() {
|
||||||
Parse.Stop ();
|
Parse.Stop ();
|
||||||
Send.Stop ();
|
Send.Stop ();
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ namespace WorldOfPeacecraft
|
|||||||
public Gui ()
|
public Gui ()
|
||||||
{
|
{
|
||||||
AllocConsole();
|
AllocConsole();
|
||||||
InitializeComponents();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetBackend (IBackend backend)
|
public void SetBackend (IBackend backend)
|
||||||
@@ -25,6 +24,13 @@ namespace WorldOfPeacecraft
|
|||||||
Backend = backend;
|
Backend = backend;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void OnLoad (EventArgs e)
|
||||||
|
{
|
||||||
|
base.OnLoad (e);
|
||||||
|
InitializeComponents ();
|
||||||
|
Backend.StartThreads ();
|
||||||
|
}
|
||||||
|
|
||||||
public void InitializeComponents ()
|
public void InitializeComponents ()
|
||||||
{
|
{
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
@@ -40,7 +46,6 @@ namespace WorldOfPeacecraft
|
|||||||
|
|
||||||
this.Controls.Add(Board);
|
this.Controls.Add(Board);
|
||||||
this.ResumeLayout();
|
this.ResumeLayout();
|
||||||
this.PerformLayout();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnClosing (System.ComponentModel.CancelEventArgs e)
|
protected override void OnClosing (System.ComponentModel.CancelEventArgs e)
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ namespace WorldOfPeacecraft
|
|||||||
|
|
||||||
IEnumerable<IPositionable> GetDragons();
|
IEnumerable<IPositionable> GetDragons();
|
||||||
|
|
||||||
|
void StartThreads();
|
||||||
|
|
||||||
void Stop();
|
void Stop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,7 +62,6 @@ namespace WorldOfPeacecraft
|
|||||||
Message = new LinkedList<string> ();
|
Message = new LinkedList<string> ();
|
||||||
LastLineRegex = new Regex ("^end:[0-9]+$");
|
LastLineRegex = new Regex ("^end:[0-9]+$");
|
||||||
ParserThread = new Thread (new ThreadStart (this.RunParser));
|
ParserThread = new Thread (new ThreadStart (this.RunParser));
|
||||||
ParserThread.Start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RunParser ()
|
private void RunParser ()
|
||||||
@@ -454,12 +453,15 @@ namespace WorldOfPeacecraft
|
|||||||
return LastLineRegex.IsMatch (lastLine);
|
return LastLineRegex.IsMatch (lastLine);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Start ()
|
||||||
|
{
|
||||||
|
ParserThread.Start();
|
||||||
|
}
|
||||||
|
|
||||||
public void Stop ()
|
public void Stop ()
|
||||||
{
|
{
|
||||||
ParserThread.Abort ();
|
ParserThread.Abort ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private class Block
|
private class Block
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ namespace WorldOfPeacecraft
|
|||||||
this.Client = client;
|
this.Client = client;
|
||||||
this.ReceiverBuffer = buffer;
|
this.ReceiverBuffer = buffer;
|
||||||
ReceiverThread = new Thread(new ThreadStart(this.doReceive));
|
ReceiverThread = new Thread(new ThreadStart(this.doReceive));
|
||||||
ReceiverThread.Start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Receive ()
|
public string Receive ()
|
||||||
@@ -33,9 +32,14 @@ namespace WorldOfPeacecraft
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Start()
|
||||||
|
{
|
||||||
|
ReceiverThread.Start ();
|
||||||
|
}
|
||||||
|
|
||||||
public void Stop()
|
public void Stop()
|
||||||
{
|
{
|
||||||
ReceiverThread.Abort();
|
ReceiverThread.Abort ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ namespace WorldOfPeacecraft
|
|||||||
this.Client = client;
|
this.Client = client;
|
||||||
this.Buffer = buffer;
|
this.Buffer = buffer;
|
||||||
this.SenderThread = new Thread(new ThreadStart(this.threadStart));
|
this.SenderThread = new Thread(new ThreadStart(this.threadStart));
|
||||||
SenderThread.Start();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Send (String message)
|
public void Send (String message)
|
||||||
@@ -34,6 +33,11 @@ namespace WorldOfPeacecraft
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Start()
|
||||||
|
{
|
||||||
|
SenderThread.Start();
|
||||||
|
}
|
||||||
|
|
||||||
public void Stop()
|
public void Stop()
|
||||||
{
|
{
|
||||||
SenderThread.Abort();
|
SenderThread.Abort();
|
||||||
|
|||||||
Reference in New Issue
Block a user