Thread Funktion mit Argumenten starten?
-
Hallo,
ich habe eine Funktion die als ein Argument einen boolschen Wert erwartet:
static void Check_Sensor(bool do_sleep) { //Blabla bla if (do_sleep == true) { Thread::Sleep(inpout32::time_sensoren); } }
Und so starte ich den Thread:
ThreadStart^ threadDelegate2 = gcnew ThreadStart( &Sensoren::Check_Sensor(true) ); runThread_Sensor = gcnew Thread( threadDelegate2 ); runThread_Sensor->Start(); //Starten
Wenn ich die Klammern mit dem Argument weglasse kommt folgendes:
: 'void Sensoren::Check_Sensor(bool)' : the specified function does not match the delegate type 'void (void)'
Wenn ich sie aber hinzufüge kommt:
: error C2102: '&' requires l-value
: error C3350: 'System::Threading::ThreadStart' : a delegate constructor expects 2 argument(s)Hab ich hier ein verständniss Problem oder ein grundlegendes?
Mfg. BNS
-
Normales ThreadStart:
http://msdn2.microsoft.com/en-us/library/system.threading.threadstart.aspxParameterizedThreadStart:
http://msdn2.microsoft.com/en-us/library/system.threading.parameterizedthreadstart.aspx
-
Hab es nun so:
runThread_Sensor^ threadDelegate2 = gcnew Thread(gcnew ParameterizedThreadStart( &Sensoren::Check_Sensor)); runThread_Sensor->Start(true); //Starten
Doch leider kommt mir ein völlig unbekannter Fehler:
: error C2065: 'threadDelegate2' : undeclared identifier
: the specified function does not match the delegate type 'void (System::Object ^)'"threadDelegate2" deswegen da ein anderer Thread schon "threadDelegate" benutzt.