2013-05-03 13 views
6

Czy można uruchomić metodę w nowym procesie potomnym? W moim przykładzie mogę wykonać metody Run, który będzie wykonywał Metoda prywatna doAction w nowym procesie (nie gwint!)Metoda uruchamiania w nowym procesie

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

    } 

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

Dlaczego wątek nie jest wystarczający? Dlaczego miałbyś kiedykolwiek potrzebować 2 'myprogram.exe' na raz, tylko po to, aby uruchomić metodę? (Jeśli to nawet możliwe.) – sircapsalot

+0

Moje pytanie jest raczej ciekawostką niż prawdziwym problemem. Chcę wiedzieć, czy to możliwe – Jacek

+0

Aby lepiej zrozumieć ten problem, myślę, że musimy lepiej zrozumieć twój ogólny sposób myślenia - powiedz nam, co próbujesz osiągnąć (nie technicznie, ale z perspektywy funkcji), abyśmy mogli lepiej zrozumieć. –

Odpowiedz

1

Procesy nie dzielą pamięci i wymagają mechanizmu między nimi komunikować. Można użyć jednego z Mechanizmy odmian tego:

  1. plików lub danych - jeden proces zapisuje do pliku lub DB, drugi czyta od i wykonuje jakąś metodę opartą na danych lub pliku zawartości
  2. serwisu host/client - użyj WCF, .NET Remoting, nazwanych potoków lub bezpośredniego mechanizmu komunikacji TCP/IP, w którym jeden proces obsługuje implementację interfejsu usługi , a proces wywołujący (klient) używa serwera proxy usługi do serializowania i komunikacji wywołanie do procesu hosta - jest to najlepsze podejście, jeśli chcesz uzyskać stateful request/response Interakcja
  3. kolejka
  4. Message - wiadomość użyć kolejkę jak MSMQ gdzie jeden proces wysyła komunikat do kolejki i innych podnosi go i wykonuje metodę

jestem pewien, że są inni, ale są to trzy najpopularniejsze metody.

Mój ulubiony to scenariusz host/klient o niewielkiej wadze. Istnieje kilka lekkich narzędzi, które ułatwiają to zadanie. Możesz użyć RemotingLite lub mojego własnego rozszerzenia RemotingLite, które obsługuje nazwy potoków nazwanych DuoVia.Net.

Powiązane problemy