Entwickler-Ecke
Basistechnologien - Thread mit mehreren Parametern
D.Follmann - Di 06.11.07 12:36
Titel: Thread mit mehreren Parametern
Hallo, ich habe mal eine grundsätzliche Frage: Ist es möglich eine Methode in einem Thread zu starten und ihr mehrere Parameter zu übergeben?
Mit ParameterizedThreadStart geht es ja nur mit einem einzigen Objekt:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| public bool Methode1() { String s = new String("myString"); Thread myThread=new Thread(new ParameterizedThreadStart(methode2)); myThread.Start(s); return true; }
private void methode2(object o) { } |
So kann ich ja immerhin ein Objekt übergeben, aber was ist, wenn ich z.B. 2 Strings an die Methode bergeben möchte?!? Geht das übehaupt? Wenn nicht, was für ein Objekt ist am sinnvollsten um die Parameter zusammenzufassen ? ArrayList, Collection oder was auch immer?
Danke!
Christian S. - Di 06.11.07 13:42
Hallo!
Am kompaktesten zu schreiben dürfte wohl ein Array sein, welches Du als Objekt übergibst.
Wenn Du es typensicher haben willst, gibt es in der Hilfe zum ParameterizedThreadStart unten einen Link namens "Creating Threads and Passing Data at Start Time", dort findest Du mehr Informaitonen dazu.
Grüße
Christian
//edit: Strings müssen übrigens nicht mit "new" erzeugt werden.
Kha - Di 06.11.07 14:11
Anonyme Methoden wären auch noch eine Möglichkeit: An Kürze nicht zu schlagen und die Methodensignatur muss nicht geändert werden.
C#-Quelltext
1:
| new Thread(() => Methode2("Hello", "World")).Start(); |
Mit C# 2.0 sieht es natürlich ein wenig hässlicher aus, ist aber imo immer noch die schönste Lösung.
C#-Quelltext
1: 2: 3:
| new Thread(delegate { Methode2("Hello", "World"); }).Start(); |
[add] Zur Vollständigkeit noch das Ganze mit Asynchronous Delegates:
C#-Quelltext
1: 2: 3:
| Action<string, string> action = Methode2; action.BeginInvoke("Hello", "World", asyncResult => action.EndInvoke(asyncResult), null); |
Meiner Meinung nach ist die Thread-Klasse allerdings in so gut wie allen Fällen BeginInvoke vorzuziehen, dieser Fall stellt wohl keine Ausnahme dar ;) .
[/add]
D.Follmann - Mi 07.11.07 08:26
ok, danke für die hilfe!
mache das jetzt über eine Generische LIST, die ich der Thread-Methode übergebe.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!