2017-10-29 1 views
-1

Ich stehe vor einem Problem, wenn mehrere Methoden gleichzeitig mit einer bestimmten Priorität ausgeführt werden sollen. Unten ist mein Code:Wie mehrere Methoden gleichzeitig mit Priorität in C# ausgeführt werden?

public static void Main(string[]args) 
{ 
    List<string> keyList = new List<string>(); 
    var connecttask = Task.Factory.StartNew(() => getkeyword(0)).ContinueWith(prevTask => connect(1000, keyList)); 
} 

Die GetKeyword() -Methode muss zuerst ausgeführt werden, da es eine Liste Parameter übergeben hat() Methode verbinden, um Verfahren zu lassen connect() seine Aufgabe zu erfüllen.

Allerdings wird dieser Code nicht ausgeführt werden, wenn ich einige Console.WriteLine unter dem Code einfügen, zum Beispiel:

public static void Main(string[]args) 
{ 
    List<string> keyList = new List<string>(); 
    var connecttask = Task.Factory.StartNew(() => getkeyword(0)).ContinueWith(prevTask => connect(1000, keyList)); 
    Console.WriteLine("Connecting..."); 
    Console.ReadLine(); 
} 

Warum ist das passiert? Ich möchte nicht, dass Console.WriteLine oder Console.ReadLine hier eingesetzt wird, da dies der Code ist, den ich hinter einer UI-Schaltfläche implementieren werde. Gibt es eine Möglichkeit, diese oder eine andere Methode zu lösen, um mehrere Methoden gleichzeitig, aber mit Priorität auszuführen?

Danke.

+0

Es klingt wie Ihr Programm wird beendet, die das erwartete Verhalten mit dem Code in Ihrem ersten Schnipsel wäre. Es ist die Console.ReadLine, die verhindert, dass das Programm beendet wird und die Aufgaben ausgeführt werden können. Sie müssen auf das Ergebnis Ihrer Aufgabe warten, sonst – pinkfloydx33

+0

Ah ich füge die Warte-Methode dort hinzu und es funktioniert! Ich danke dir sehr!! @ pinkfloydx33 – Corene

Antwort

0

Anscheinend habe ich einfach nicht auf die Aufgabe gewartet. Hier ist der Code-Schnipsel zu verhindern, dass es verlassen:

public static void Main(string[]args) 
{ 
    List<string> keyList = new List<string>(); 
    var connecttask = Task.Factory.StartNew(() => getkeyword(0)).ContinueWith(prevTask => connect(1000, keyList)); 
    connecttask.Wait(); 
} 
Verwandte Themen