So übergeben Sie Argumente zum Einfädeln in C #

8

alles Ich habe diese Frage durchsucht, und ich fand so viele Antworten darauf, dass es nicht schwer war, eine Lösung für meine Frage zu finden. ABER, ich habe seltsame Erfahrung und ich kenne den Grund nicht, deshalb bitte ich die Leute, mir einen Rat zu geben. Hier sind meine Codes:

%Vor%

Ja, das sind gewöhnliche Thread-Codes. Ich erwarte, dass das gesamte Thread-Array 10 Mal die RunThread-Methode aufruft. Es sollte wie

sein %Vor%

Das ist, was ich erwarte. Die Reihenfolge ist nicht wichtig. Aber ich bekomme das Ergebnis wie folgt.

%Vor%

Was ich erwarte ist, dass die RunThread-Funktion das Argument (num) von 0 bis 9 tragen soll. Und ich kann nicht herausfinden, was diese Fehlermeldung ist. "Der Thread" ~~ und so weiter. Könnte mir jemand eine Ahnung davon geben?

    
Joshua Son 12.08.2013, 00:02
quelle

2 Antworten

6

Sie werden erstellt eine Schließung über die Loop-Variable - eine einfache Lösung besteht darin, nur eine lokale Kopie zu erstellen, damit Ihr Thread den gewünschten Wert verwendet:

%Vor%     
BrokenGlass 12.08.2013, 00:52
quelle
3

Vielleicht möchten Sie Ihren Code so ändern, dass Sie ParameterizedThreadStart Delegate verwenden :

%Vor%

Andernfalls greifen Sie von Ihrem Thread-Einstiegspunkt-Delegierten () => RunThread(i) auf die Variable i aus dem Kontext des übergeordneten Hauptthreads zu, der sich möglicherweise ändert, bevor Ihr neuer Thread überhaupt gestartet werden kann.

    
Noseratio 12.08.2013 00:48
quelle

Tags und Links