Hallihallo,
ich hätte da mal gerne ein problem…
ich krieg das Action Object in verbindung mit Tasks nicht auf die Reihe.
(Diese Methode soll aufgerufen werden)
Void sendNewData(Remote ^remote){...}
Die Abarbeitung eine Netzwerkanfrage erfolgt hier…
(Das remote-object enthält ein verbundenes Socketobjekt über das die Daten hin und her geschickt werden sollen)
Void ReceiveData(TransferDataCommand^ cmd,
Remote ^remote){
Tasks::Task ^task;
Console::WriteLine("Eingehender Datenstrom von {0}...",remote-\>RemoteIP());
switch (cmd-\>Command){
case NetCommand::RequestNewData:
Console::WriteLine("Anfrage für neues Datenpaket!");
{
Action^\> ^action = gcnew
Action^\>(this, &LottoServer::sendNewData);
try{
task = gcnew Tasks::Task(action); //Fehler:
task-\>Start();
}catch(Exception ^ex){
Console::WriteLine("Fehler: {0}",ex-\>Message);
}
}
break;
....
Der Compiler meldet :
Error 1 error C2664: ‚System::Threading::Tasks::Task::Task(System::Action ^)‘ : cannot convert parameter 1 from ‚System::Action ^‘ to ‚System::Action ^‘ …
ich habe schon versucht in der Zeile mit
task = gcnew Tasks::Task(action);
Das action objekt wie folgt zu casten
task = gcnew Tasks::Task((Action^)action);
dabei wir das Programm auf fehlerfrei überetzt, allerding wir dann das Programm mit einer invalid Cast Exception „abgebrochen“.
Auch habe ich versucht die Methoden so umzubauen, das Argumente vom Typ Object^ akzeptiert werden. Das war genauso erfolglos.
Mir erschließt sich aber auch nicht so wirklich wie ich Parameter an die newData Methode übergebe. die MSDN war dabei nicht wirklich hilfreich.
Ich wäre für jede Hilfe wirklich dankbar
Enrico