Threads werden nicht mehr im Konstruktor gestartet, um race conditions zu

vermeiden
This commit is contained in:
2014-05-01 18:10:01 +02:00
parent 9bf7abb465
commit 7ffba85903
6 changed files with 31 additions and 8 deletions

View File

@@ -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 ();

View File

@@ -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)

View File

@@ -10,6 +10,8 @@ namespace WorldOfPeacecraft
IEnumerable<IPositionable> GetDragons(); IEnumerable<IPositionable> GetDragons();
void StartThreads();
void Stop(); void Stop();
} }
} }

View File

@@ -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,13 +453,16 @@ 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
{ {
private string Name; private string Name;

View File

@@ -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 ();
} }
} }
} }

View File

@@ -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();