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();
|
||||
}
|
||||
|
||||
public void StartThreads() {
|
||||
Parse.Start ();
|
||||
Rec.Start ();
|
||||
Send.Start ();
|
||||
}
|
||||
|
||||
public void Stop() {
|
||||
Parse.Stop ();
|
||||
Send.Stop ();
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -10,6 +10,8 @@ namespace WorldOfPeacecraft
|
||||
|
||||
IEnumerable<IPositionable> GetDragons();
|
||||
|
||||
void StartThreads();
|
||||
|
||||
void Stop();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,6 +32,11 @@ namespace WorldOfPeacecraft
|
||||
}
|
||||
}
|
||||
|
||||
public void Start()
|
||||
{
|
||||
ReceiverThread.Start ();
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
ReceiverThread.Abort ();
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user