Übergabe von Parametern an die ThreadStart-Methode in C#
In C# ist die ThreadStart-Methode ein Delegat, der das Ausführungsverhalten des Threads definiert. Allerdings kann die Übergabe von Parametern an diese Methode eine Herausforderung darstellen.
Betrachten Sie beispielsweise den folgenden Code, in dem wir versuchen, einen Parameter an die Methode „Download“ zu übergeben:
public void download(string filename) { // download code } Thread thread = new Thread(new ThreadStart(download(filename));
Dieser Code wird führt zu einem Fehler „Methodentyp erwartet“. Um Parameter effektiv zu übergeben, sollten Sie die folgenden Ansätze in Betracht ziehen:
Verwendung anonymer Lambda-Ausdrücke:
Die einfachste Lösung besteht darin, anonyme Lambda-Ausdrücke direkt im ThreadStart-Konstruktor zu verwenden:
string filename = ... Thread thread = new Thread(() => download(filename)); thread.Start();
Dieser Ansatz ermöglicht die Übergabe mehrerer Parameter und ermöglicht eine Überprüfung zur Kompilierungszeit, ohne dass eine Umwandlung erforderlich ist „Objekt.“
Verwenden von ParameterizedThreadStart:
Alternativ können Sie den ParameterizedThreadStart-Delegaten verwenden, der wie folgt definiert ist:
public delegate void ParameterizedThreadStart(object obj);
Dies ermöglicht Ihnen So übergeben Sie einen einzelnen Objektparameter an den Thread:
ParameterizedThreadStart threadStart = new ParameterizedThreadStart(download); Thread thread = new Thread(threadStart); thread.Start(filename);
Übergabe mehrerer Parameter:
Für Szenarien, in denen mehrere Parameter übergeben werden müssen, können benutzerdefinierte Delegate-Typen oder Techniken wie das Erfassen von Variablen durch Abschlüsse eingesetzt werden. Der Ansatz des anonymen Lambda-Ausdrucks wird jedoch aufgrund seiner Einfachheit und Zweckmäßigkeit im Allgemeinen bevorzugt.
Das obige ist der detaillierte Inhalt vonWie kann ich Parameter an eine ThreadStart-Methode in C# übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!