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();
}
public void StartThreads() {
Parse.Start ();
Rec.Start ();
Send.Start ();
}
public void Stop() {
Parse.Stop ();
Send.Stop ();

View File

@@ -17,7 +17,6 @@ namespace WorldOfPeacecraft
public Gui ()
{
AllocConsole();
InitializeComponents();
}
public void SetBackend (IBackend backend)
@@ -25,6 +24,13 @@ namespace WorldOfPeacecraft
Backend = backend;
}
protected override void OnLoad (EventArgs e)
{
base.OnLoad (e);
InitializeComponents ();
Backend.StartThreads ();
}
public void InitializeComponents ()
{
this.SuspendLayout();
@@ -40,7 +46,6 @@ namespace WorldOfPeacecraft
this.Controls.Add(Board);
this.ResumeLayout();
this.PerformLayout();
}
protected override void OnClosing (System.ComponentModel.CancelEventArgs e)

View File

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

View File

@@ -62,7 +62,6 @@ namespace WorldOfPeacecraft
Message = new LinkedList<string> ();
LastLineRegex = new Regex ("^end:[0-9]+$");
ParserThread = new Thread (new ThreadStart (this.RunParser));
ParserThread.Start();
}
private void RunParser ()
@@ -454,13 +453,16 @@ namespace WorldOfPeacecraft
return LastLineRegex.IsMatch (lastLine);
}
public void Start ()
{
ParserThread.Start();
}
public void Stop ()
{
ParserThread.Abort ();
}
private class Block
{
private string Name;

View File

@@ -17,7 +17,6 @@ namespace WorldOfPeacecraft
this.Client = client;
this.ReceiverBuffer = buffer;
ReceiverThread = new Thread(new ThreadStart(this.doReceive));
ReceiverThread.Start();
}
public string Receive ()
@@ -33,9 +32,14 @@ namespace WorldOfPeacecraft
}
}
public void Start()
{
ReceiverThread.Start ();
}
public void Stop()
{
ReceiverThread.Abort();
ReceiverThread.Abort ();
}
}
}

View File

@@ -17,7 +17,6 @@ namespace WorldOfPeacecraft
this.Client = client;
this.Buffer = buffer;
this.SenderThread = new Thread(new ThreadStart(this.threadStart));
SenderThread.Start();
}
public void Send (String message)
@@ -34,6 +33,11 @@ namespace WorldOfPeacecraft
}
}
public void Start()
{
SenderThread.Start();
}
public void Stop()
{
SenderThread.Abort();