Laden...

thread folge ????

Erstellt von IhateWin vor 19 Jahren Letzter Beitrag vor 19 Jahren 1.762 Views
I
IhateWin Themenstarter:in
79 Beiträge seit 2004
vor 19 Jahren
thread folge ????

wenn ich aus einer methode andere methoden aufrufe werde diese nacheinander abgearbeitet... z.B.:

private void MCP()
{
Methode1();
Methode2();
Methode3();
}

wenn ich aber eine von diesen Methoden in einem eigenem Thread starte, wie kann ich verhindern, das die Folgemethoden sofort und nicht nach beendigung der erst-methode gestartet werden ???

private void MCP()
{
Thread thread = new Thread(new ThreadStart(Methode1));
thread.Start();
Methode2();
Methode3();
}

C
980 Beiträge seit 2003
vor 19 Jahren

Z.b. mit einem RendezVous/Barrier (hier trivial mittels thread.Join() ) ...

Was ist aber der Sinn daran, eine Methode in einem anderen Thread zu starten und dann doch gleich nach dem Start auf seine Terminierung zu warten? Bringt ausser einer Performancebremse kein Vorteil...?

I
IhateWin Themenstarter:in
79 Beiträge seit 2004
vor 19 Jahren
form soll benutztbar bleiben...

ich starte eine methode, die sehr viel leistung frist aber möchte auch das die form weiter benutzt werden kann, ohne das sie ein starrer fleck auf dem desktop ist ....

V
842 Beiträge seit 2003
vor 19 Jahren

Hi!

Das ginge evtl. mit der Methode Join. Die veranlasst einen Thread zu warten bis der andere Thread seine Ausführung beendet hat.

Code-Hacker

X
2.051 Beiträge seit 2004
vor 19 Jahren

du fürst einfach deine MCP() Mehtode in einem Thread aus. dann brauchst du keine bremsen und dein form ist immer noch ansprechbar.


private void MCP()
{
  Thread thread = new Thread(new ThreadStart(MCP1));
  thread.Start();
}

private void MCP1()
{ 
  Methode1();
  Methode2();
  Methode3();
}
I
IhateWin Themenstarter:in
79 Beiträge seit 2004
vor 19 Jahren
warum bin ich da nicht selber draufgekommen, supi idee, danke ....

Original von Xqgene
du fürst einfach deine MCP() Mehtode in einem Thread aus. dann brauchst du keine bremsen und dein form ist immer noch ansprechbar.

  
private void MCP()  
{  
  Thread thread = new Thread(new ThreadStart(MCP1));  
  thread.Start();  
}  
  
private void MCP1()  
{   
  Methode1();  
  Methode2();  
  Methode3();  
}