public Module() { functionPointerDictionary = new Dictionary<string, ModuleFunctionPointer>(); threadList = new Dictionary<string,Thread>(); threadsInWork = 0; requestFunction = null; }
// public abstract string Execute(string function, Dictionary<string, string> parameter); /// <summary> /// Startet die Abarbeitung der Modulfunktion. /// </summary> /// <param name="function">Name der Funktion - entspricht dem Schlüssel in dem Dictionary functionPointerDictionary.</param> /// <param name="parameter">Die Parameter die an die Funktion übergäben werden.</param> /// <returns></returns> public string Execute(string function, Dictionary<string, string> parameter) { // Neuen Thread erstellen Thread t = new Thread(new ThreadStart(Run)); // Dem Thread einen Namen zuweisen um ihn später zu identifizieren t.Name = ""+t.GetHashCode(); MessageBox.Show("Thread mit Namen gestertet: "+t.Name);//TEST // Funktionsparameter zwischenspeichern requestFunctionParameter = parameter; // Funktionszeiger zwischenspeichern requestFunction = GetModulFunction(function); t.Start(); threadsInWork++; threadList.Add(t.Name, t); // Wen die Funktionen der Mudule paralell abgearbeitet werden könn, muss die Funktion in einem Thread gestertet werden // und ert wenn der Thread zu Ende ist, darf das Event weiter gegeben werden. return null; }
/// <summary> /// Fügt eine Funktion zu dem Modul hinzu. /// </summary> /// <param name="functionPointer">Zeiger auf die Funktion</param> /// <param name="functionName">Name der Funktion - entspricht dem Schlüssel in dem Dictionary functionPointerDictionary.</param> /// <returns>true wenn die Funktion hinzugefügt wurde.</returns> protected bool AddFunctionToModul(ModuleFunctionPointer functionPointer, string functionName) { try { functionPointerDictionary.Add(functionName, functionPointer); return true; }catch(Exception ex){ return false; } }