So starten Sie einen Prozess in einem Thread

8

WEITER BEARBEITEN Das Folgende ist kein Produktionscode - ich spiele nur mit ein paar Klassen herum und versuche herauszufinden, wie ich Prozesse innerhalb von Threads ausfühle - oder auch wenn das machbar ist. Ich habe verschiedene Definitionen auf MSDN gelesen, bin aber ein Neuling für Threads und Prozesse, so dass weitere definitive Verweise auf Artikel geschätzt werden würden

das ist in Ordnung ...

%Vor%

das ist nicht ...

%Vor%

Warum macht der zweite nicht dasselbe wie der erste? Im zweiten Skript versuche ich Process.Start mit dem Threadstart-Delegaten zu übergeben ... Ich dachte, das wäre ok, da es eine void -Methode ist? Ist das erste Skript die einzige Option oder kann ich die zweite leicht ändern, so dass es effektiv den gleichen Job wie die erste tut, d. H. Eine Instanz von Editor in einem angegebenen Thread starten?

BEARBEITEN

Einige Hintergrundinformationen zu warum Ich spiele mit diesem Code herum: Letztendlich muss ich eine Anwendung erstellen, die mehrere Excel-Prozesse gleichzeitig ausführt. Diese Prozesse können bei VBA-Fehlern problematisch sein, da sie zu einer Dialogbox führen. Also dachte ich, wenn jeder Prozess in einem Thread lief, dann, wenn ein bestimmter Thread zu lange ausgeführt wurde, konnte ich den Thread beenden. Ich bin ein Neuling für Threads / Prozesse, also spiele ich im Moment mit den Möglichkeiten herum.

    
whytheq 22.01.2013, 09:43
quelle

3 Antworten

15

Ein ThreadStart erwartet einen Delegaten, der void zurückgibt. Process.Start gibt bool zurück, ist also keine kompatible Signatur. Sie können den Rückgabewert durch Verwendung eines Lambda, das Ihnen einen Delegaten des richtigen Rückgabetyps (d. H. Void) gibt, wie folgt schlucken:

%Vor%

... aber es ist wahrscheinlich ratsam, den Rückgabewert zu überprüfen:

%Vor%

Natürlich beginnt ein Prozess in einem neuen Prozess (ein völlig separater Haufen von Threads), also ist es völlig sinnlos, ihn auf einem Thread zu starten.

    
spender 22.01.2013, 09:45
quelle
6

Sie können Änderungen wie

vornehmen %Vor%     
Rahul Vasantrao Kamble 22.01.2013 09:56
quelle
4

Starten Sie den Prozess einfach normal mit diesem Code:

%Vor%

Es hat keinen Sinn und keinen Vorteil, einen Thread zum Ausführen eines neuen Prozesses zu erstellen. Es ist so, als würde man eine Batch-Datei ausführen, die "cmd.exe" ausführt, wenn man "cmd.exe" direkt ausführen kann ... man macht einfach mehr als das, was für nichts nötig ist. Erfinde das Rad nicht neu und spiele einfach: P

    
Tommaso Belluzzo 22.01.2013 09:50
quelle

Tags und Links