ich überarbeite eine Anwendung. Ich möchte jetzt, dass das GUI vollkommen losgelöst von meiner Logik existiert.
Ich arbeite mit C# und Winforms. Aber das ist auch erstmal egal.
Ich habe mir dazu folgendes überlegt:
Etwas Code, da Code meist mehr sagt als 1000 Worte <3
Code: Alles auswählen
public partial class MainForm : Form
{
// in diesem Thread findet die ganze arbeit statt. der HauptThread wird nur für das darstellen und die
// Interaktion mit dem GUI verwendet
System.Threading.Thread logicThread;
listOfLogicActions List<ActionBase> = new List<ActionBase>();
public MainForm()
{
InitializeComponent();
logicThread = new System.Threading.Thread(DoThisAllTheTime);
logicThread.Start();
}
private void ButtonOpenProtocol_Click(object sender, EventArgs e)
{
// Displays an OpenFileDialog so the user can select a data file.
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Multiselect = false;
openFileDialog.Filter = "blaBla";
if ((openFileDialog.ShowDialog() == DialogResult.OK) &&
(openFileDialog.CheckFileExists == true))
{
listOfLogicActions.Add(new ActionOpenFile(openFileDialog.FileName));
}
}
public void DoThisAllTheTime()
{
while(true)
{
for(int index=0; index<listOfLogicActions.Count; ++index)
{
listOfLogicActions[index].doIt();
}
}
}
}
Jetzt rattert der logicWorkerThread aber die GANZE ZEIT...
Meine Frage:
Kann ich das irgendwie anders lösen, dass nicht die ganze Zeit eine Schleife durchratter, sondern das das Durchlaufen der listOfLogicActions nur angestoßen wird, wenn ein neuer Eintrag vorhanden ist?