2010-08-05 14 views
16

W tej chwili używam Process.Kill(), aby zabić proces. Czy jest jakiś sposób, zamiast natychmiast zabić go, że mogę wysłać wiadomość do procesu, nakazującą jej zamknięcie, aby mogła z gracją wyczyścić i zamknąć system. Zasadniczo szukam odpowiednika po prostu kliknięciu czerwonego X w prawym górnym rogu, co, jak sądzę, spowoduje wysłanie wiadomości do aplikacji z prośbą o zamknięcie."Z wdziękiem" zabijanie procesu

+0

ten został poproszony, i odpowiedź została tutaj przyjętych: http://stackoverflow.com/questions/2055753/ how-to-gracefully-endate-a-process – David

+0

@David Stratton Good find i tak, idea jest taka sama, ale to pytanie jest szczególnie pytające o kod zarządzany (zobacz tagi [C#] and [.net]), który istnieje jeszcze nie odpowiedź na drugie pytanie –

+0

@David Stratton - To pytanie dotyczy zgrabnego zamykania za pomocą kodu zarządzanego z C#, link, który umieszczasz, dotyczy win32, a odpowiedzi wymagają pInvokes. Nie to samo w ogóle. – Oded

Odpowiedz

25

Jeśli proces ma interfejs Windows (tak jak odnosić się do czerwonego "X"), możesz spróbować Process.CloseMainWindow(). Jeśli się nie powiedzie, możesz zmienić stan na Process.Kill().

+1

To działało idealnie! Dzięki za szybką i prostą odpowiedź! – Icemanind

+0

ładne i proste. – jeff

1

To zależy od procesu, który zabijasz. Jak podano na odpowiedniej stronie dla Process.Kill, "Kill jest jedynym sposobem na zakończenie procesów, które nie mają graficznych interfejsów." Jeśli istnieje okno graficzne, przejdź do odpowiedzi przez lc powyżej; Process.CloseMainWindow działa jak czerwony X, do którego się odwołałeś.

2

Zabijanie nie może być pełne wdzięku, być może możesz zasygnalizować proces popełnienia samobójstwa. Do sygnalizowania masz wiele opcji.

  • SendMessage
  • NamedPipes
  • Nazwany Mutex
  • Gniazdka
Powiązane problemy