Veröffentlicht 7. Mai 200916 j Hallo, kann mir jemand sagen, wie man ein char* an einen Parameterized Thread übergibt. Ich komm damit irgendwie nicht klar. Bekomme dann die Fehlermeldung, dass char* nicht in System::Object^ umgewandelt werden kann. Schon mal vielen Dank im voraus. Gruß KT82
7. Mai 200916 j ParameterizedThreadStart() akzeptiert nur object. Mußt du dann halt später wieder in char* casten. z.B. char m_ex[5] = "hallo"; char* param = &m_ex; Thread exThread = new Thread(new ParameterizedThreadStart(DoSomething)); exThread.Start(param); private void DoSomething(object paramAsObject) { char* objAsPointer = (char*)paramAsObject; } Aber wie immer: Keine Gewähr. ^^^^ Bearbeitet 7. Mai 200916 j von 0815FIA
7. Mai 200916 j Ja, und das mit der Gewähr tritt wohl hier ein. Genau so habe ich es nämlich bei mir im Quellcode stehen. Und wie gesagt, kommt dann diese eine Fehlermeldung bei Thread->Start. Ich glaub die Schwierigkeit liegt hier darin, den char* in ein Object^ zu casten. Nur habe ich nocht nicht herausgefunden wie das geht. Und ein Trick 17 ist mir dazu noch nicht eingefallen. Aber trotzdem danke erst mal für die Hilfe
7. Mai 200916 j Ja, unbedingt! Sonst wirft das meine ganze Planung durcheinander . Hatte ich vorher auch schon probiert. Da gings nur irgendwie nicht, wahrscheinlich hatte ich noch irgendeinen anderen Fehler drin. Jetzt klappts aber. Hier mal der Code. ... char *blub = "blubber"; Thread^ paramThread = gcnew Thread(gcnew ParameterizedThreadStart(this, &TolleKlasse::ThreadParam)); String^ strblub = gcnew String(blub); paramThread->Start(strblub); ... void TolleKlasse::ThreadParam(Object^ data); { String^ temp = Convert::ToString(data); char *buffer = (char*)(void*)Marshal::StringToHGlobalAnsi(temp); ... }[/PHP] Ich hoffe, ich hab nix vergessen. Wer ne bessere oder andere Lösung hat, kann ja gerne noch ergänzen.
8. Mai 200916 j Pointer :beagolisc Oder einfach einen Wrapper schreiben. [Editerle] War eigentlich Zeiger? Array Class Bearbeitet 8. Mai 200916 j von TDM
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.