Heim >Backend-Entwicklung >C++ >Wie kann ich Parameter an eine ThreadStart-Methode in C# übergeben?

Wie kann ich Parameter an eine ThreadStart-Methode in C# übergeben?

DDD
DDDOriginal
2025-01-07 08:02:10632Durchsuche

How Can I Pass Parameters to a ThreadStart Method in C#?

Ü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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn