2013-05-03 11 views
6

Ist es möglich, die Methode im neuen Kindprozess auszuführen? In meinem Beispiel kann ich Methode Run ausführen, die private Methode doAction in neuen Prozess ausgeführt wird (nicht Thread!)Methode im neuen Prozess ausführen

public class MyClass 
{ 
    public void Run() 
    { 
     //what should I do there to run 'doAction' in new process? 
     doAction(); 

    } 

    private void doAction() 
    { 
     ... 
    } 
} 
+2

Warum wäre Thread nicht ausreichend? Warum sollten Sie jemals 2 'myprogram.exe' auf einmal ausführen, nur um eine Methode auszuführen? (wenn das überhaupt möglich ist.) – sircapsalot

+0

Meine Frage ist eher Neugier als echtes Problem. Ich möchte wissen, ist es möglich – Jacek

+0

Um dieses Problem besser zu verstehen, denke ich, dass wir Ihre allgemeine Denkweise besser verstehen müssen - sagen Sie uns, was Sie erreichen wollen (nicht technisch, sondern aus einer Funktionsperspektive), damit wir besser verstehen können. –

Antwort

1

Prozesse nicht teilen Speicher und erfordern einen Mechanismus zwischen ihnen zu kommunizieren. Sie können diese von einer Vielzahl Mechanismen verwenden:

  1. Datei oder Daten - ein Prozess schreibt in eine Datei oder DB, der andere liest aus und führt eine Methode auf der Basis der Daten oder Dateiinhalt
  2. Dienst Host/Client - Verwenden Sie WCF, .NET Remoting, Named Pipes oder den direkten TCP/IP-Kommunikationsmechanismus , in dem ein Prozess eine Implementierung der Schnittstelle hostet und der aufrufende Prozess (der Client) einen Proxy der Service-Schnittstelle verwendet Der Aufruf an den Host-Prozess - das ist der beste Ansatz, wenn Sie eine stateful Anfrage/Antwort wollen Interaktion
  3. Nachrichtenwarteschlange - eine Nachricht Warteschlange wie MSMQ verwenden, wo ein Prozess eine Nachricht in die Warteschlange und den anderen hebt sie auf und führt die Methode

Ich bin sicher, es gibt andere, aber diese sind sendet die drei häufigsten Methoden.

Mein Favorit ist ein leichtes Service Host/Client-Szenario. Es gibt mehrere leichtgewichtige Hilfsprogramme, um Ihnen das zu erleichtern. Sie können RemotingLite oder meine eigene Erweiterung von RemotingLite verwenden, die Named Pipes namens DuoVia.Net unterstützt.

Verwandte Themen