Entwickler-Ecke
Basistechnologien - Multithreading
PC17 - Fr 23.07.10 11:24
Titel: Multithreading
Hallo,
wenn ich einen zweiten Prozess parallel laufen lassen will mache ich das ja über Multithreading:
C#-Quelltext
1: 2: 3:
| ThreadStart del; del = new ThreadStart(MyProcedure); Thread myFirstThread = new Thread(del); |
Die Varible "MyProcedure" ist ja immer die Methode die parallel gestartet werden soll. Habe mich jetzt schon länger umgeschaut und gegooglt ob ich einen Code auch in einen anderen Thread aufrufen kann.
Also das ich den Code nicht extra in einen Methode packen muss sondern gleich den Code parallel laufen lassen kann, darüber habe ich leider nichts gefunden jetzt wollte ich hier einmal nachfragen ob das eventuell möglich ist?
MfG PC17
Moderiert von
Kha: Topic aus WinForms verschoben am Sa 24.07.2010 um 10:09
danielf - Fr 23.07.10 11:36
Hallo,
also ThreadStart benötigst du nicht unbedingt.
C#-Quelltext
1: 2:
| Thread t = new Thread(new ThreadStart(Method)); t.Start(); |
reicht aus.
Alternativ kannst du auch einen BackgroundWorker verwenden. Bei diesem registrierst du ein Event Namens DoWork in der du die Funktionalität implementierst:
C#-Quelltext
1: 2: 3:
| BackgroundWorker bg = new BackgroundWorker(); bg.DoWork += new DoWorkEventHandler(bg_DoWork); bg.RunWorkerAsync(); |
Direkt ne Methode asynchron aufrufen müsstest du wohl kapseln.
Gruß
norman2306 - Fr 23.07.10 13:35
wenn ich es richtig verstehe, willst du nicht extra eine Funktion für den Delegate deklarieren? Das geht mit einem Lambda-Ausdruck:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| Thread myLThr = new Thread(()=> { });
myLThr.Start(); |
In C# 4.0 gibt es noch die Parallel-Klasse, in der man das für For-Schleifen so ähnlich macht:
C#-Quelltext
1: 2: 3: 4:
| Parallel.For(0,5,i=> { }); |
PC17 - Fr 23.07.10 20:05
super genau sowas habe ich gemeint ;)
Danke
Delete - Fr 23.07.10 21:32
PC17 hat folgendes geschrieben : |
| wenn ich einen zweiten Prozess parallel laufen lassen will mache ich das ja über Multithreading: |
Nein, dann startest du einfach einen zweiten Prozess. Wenn du Code im gleichen Prozess parallel ausführen willst, dann startest du einen weiteren Thread.
Das nur noch mal zum richtigen Verständnis und Verwendung der Fachausdrücke.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!