Autor Beitrag
PC17
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Fr 23.07.10 11:24 
Hallo,

wenn ich einen zweiten Prozess parallel laufen lassen will mache ich das ja über Multithreading:
ausblenden 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 user profile iconKha: Topic aus WinForms verschoben am Sa 24.07.2010 um 10:09
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 23.07.10 11:36 
Hallo,

also ThreadStart benötigst du nicht unbedingt.
ausblenden 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 222
Erhaltene Danke: 16

Win XP, Win 7 64-Bit
C# 4.0 (VS2010)
BeitragVerfasst: 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:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
Thread myLThr = new Thread(()=>
      {
         //hier kommt der parallel auszuführende Code...
      });

myLThr.Start();


In C# 4.0 gibt es noch die Parallel-Klasse, in der man das für For-Schleifen so ähnlich macht:

ausblenden C#-Quelltext
1:
2:
3:
4:
Parallel.For(0,5,i=>
   {
      //Parallele Aktion mit i
   });
PC17 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37



BeitragVerfasst: Fr 23.07.10 20:05 
super genau sowas habe ich gemeint ;)
Danke
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 23.07.10 21:32 
user profile iconPC17 hat folgendes geschrieben Zum zitierten Posting springen:
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.