Aracılığıyla paylaş


Process.WaitForExit Yöntem

Tanım

İlişkili işlemin çıkması için beklenme süresini ayarlar ve zaman geçene veya işlemden çıkılana kadar geçerli yürütme iş parçacığını engeller. Geçerli iş parçacığının engellenmesini önlemek için olayını kullanın Exited .

Kod örnekleri için ve ExitCode özellik başvuru sayfalarına bakınStandardError.

Aşırı Yüklemeler

WaitForExit()

Bileşene Process , ilişkili işlemin çıkması için süresiz olarak beklemesini emreder.

WaitForExit(Int32)

Bileşene Process , ilişkili işlemin çıkması için belirtilen milisaniye sayısını beklemesini emreder.

WaitForExit(TimeSpan)

İşlem bileşenine, ilişkili işlemin çıkması için belirtilen süre boyunca beklemesini emreder.

WaitForExit()

Kaynak:
Process.cs
Kaynak:
Process.cs
Kaynak:
Process.cs

Bileşene Process , ilişkili işlemin çıkması için süresiz olarak beklemesini emreder.

public:
 void WaitForExit();
public void WaitForExit ();
member this.WaitForExit : unit -> unit
Public Sub WaitForExit ()

Özel durumlar

Bekleme ayarına erişilemedi.

Hiçbir işlem Id ayarlanmadı ve özelliğin Id belirlenebileceği bir Handle işlem yok.

-veya-

Bu Process nesneyle ilişkilendirilmiş bir işlem yok.

-veya-

Uzak bilgisayarda çalışan bir işlemi çağırmaya WaitForExit() çalışıyorsunuz. Bu yöntem yalnızca yerel bilgisayarda çalışan işlemler için kullanılabilir.

Örnekler

Özellik başvuru sayfasının Açıklamalar bölümüne StandardError bakın.

Açıklamalar

WaitForExit() geçerli iş parçacığını ilişkili işlem sonlandırılıncaya kadar bekler. İşlemde diğer tüm yöntemler çağrıldıktan sonra çağrılmalıdır. Geçerli iş parçacığının engellenmesini önlemek için olayını kullanın Exited .

Bu yöntem, bileşene işlemin ve olay işleyicilerinin çıkması için sonsuz bir süre beklemesini bildirir Process . Bu, bir uygulamanın yanıt vermeyi durdurmasına neden olabilir. Örneğin, kullanıcı arabirimine sahip bir işlemi çağırırsanız CloseMainWindow , işlem ileti döngüsünü asla girmeyecek şekilde yazıldıysa, işletim sistemine ilişkili işlemi sonlandırma isteği işlenmeyebilir.

Not

.NET Framework 3.5 ve önceki sürümlerde WaitForExit() aşırı yükleme süresiz olarak değil milisaniye (yaklaşık 24 gün) beklediMaxValue. Ayrıca, tam MaxValue saate ulaşıldıysa önceki sürümler olay işleyicilerinin çıkmasını beklemedi.

Bu aşırı yükleme, yeniden yönlendirilen standart çıktı için zaman uyumsuz olayların işlenmesi de dahil olmak üzere tüm işlemlerin tamamlanmasını sağlar. Standart çıkış zaman uyumsuz olay işleyicilerine WaitForExit(Int32) yeniden yönlendirildiğinde aşırı yüklemeye yapılan bir çağrıdan sonra bu aşırı yüklemeyi kullanmanız gerekir.

İlişkili bir işlemden çıkıldığında (yani, işlem sistemi tarafından normal veya anormal sonlandırma yoluyla kapatıldığında), sistem işlemle ilgili yönetim bilgilerini depolar ve adlı WaitForExit()bileşene döner. Bileşen Process daha sonra çıkış işlemine kullanarak Handle öğesini içeren ExitTimebilgilere erişebilir.

İlişkili işlemden çıkıldığından, Handle bileşenin özelliği artık mevcut bir işlem kaynağını işaret etmemektedir. Bunun yerine tanıtıcı yalnızca işletim sisteminin işlem kaynağı hakkındaki bilgilerine erişmek için kullanılabilir. Sistem, bileşenler tarafından Process serbest bırakılmamış çıkışlı işlemlerin tanıtıcılarını biliyor, bu nedenle bileşen kaynakları özel olarak boşaltana kadar Process ve Handle bilgilerini bellekte tutarExitTime. Bu nedenle, bir örneği her çağırdığınızda Start , ilişkili işlem sonlandırıldığında ve artık bu işlemle ilgili herhangi bir Process yönetim bilgisine ihtiyacınız kalmadığında çağrısında Close bulunur. Close , çıkış işlemine ayrılan belleği serbest bırakır.

Ayrıca bkz.

Şunlara uygulanır

WaitForExit(Int32)

Kaynak:
Process.cs
Kaynak:
Process.cs
Kaynak:
Process.cs

Bileşene Process , ilişkili işlemin çıkması için belirtilen milisaniye sayısını beklemesini emreder.

public:
 bool WaitForExit(int milliseconds);
public bool WaitForExit (int milliseconds);
member this.WaitForExit : int -> bool
Public Function WaitForExit (milliseconds As Integer) As Boolean

Parametreler

milliseconds
Int32

İlişkili işlemin çıkmasını beklemek için milisaniye cinsinden süre. 0 değeri hemen bir dönüş belirtir ve -1 değeri sonsuz beklemeyi belirtir.

Döndürülenler

true ilişkili işlemden çıkıldıysa; aksi takdirde , false.

Özel durumlar

Bekleme ayarına erişilemedi.

Hiçbir işlem Id ayarlanmadı ve özelliğin Id belirlenebileceği bir Handle işlem yok.

-veya-

Bu Process nesneyle ilişkilendirilmiş bir işlem yok.

-veya-

Uzak bilgisayarda çalışan bir işlemi çağırmaya WaitForExit(Int32) çalışıyorsunuz. Bu yöntem yalnızca yerel bilgisayarda çalışan işlemler için kullanılabilir.

milliseconds , -1 dışında, sonsuz bir zaman aşımını temsil eden negatif bir sayıdır.

Örnekler

Özelliği için kod örneğine ExitCode bakın.

Açıklamalar

WaitForExit(Int32) geçerli iş parçacığını ilişkili işlem sonlandırılıncaya kadar bekler. İşlemde diğer tüm yöntemler çağrıldıktan sonra çağrılmalıdır. Geçerli iş parçacığının engellenmesini önlemek için olayını kullanın Exited .

Bu yöntem, bileşene Process işlemin çıkması için sınırlı bir süre beklemesini emreder. Sonlandırma isteği reddedildiğinden, ilişkili işlem aralığın sonuna kadar çıkmazsa, false çağırma yordamına döndürülür. için belirtebilirsiniz Timeout.Infinite ve Process.WaitForExit(Int32) aşırı yüklemeyle WaitForExit() aynı şekilde davranır.milliseconds Yöntemine 0 (sıfır) geçirirseniz, yalnızca işlemden zaten çıkılmışsa döndürür true ; aksi takdirde hemen döndürür false.

Not

.NET Framework 3.5 ve önceki sürümlerde -1 ise milliseconds aşırı WaitForExit(Int32) yükleme süresiz olarak değil milisaniye (yaklaşık 24 gün) beklemektedirMaxValue.

Standart çıkış zaman uyumsuz olay işleyicilerine yeniden yönlendirildiğinde, bu yöntem döndürdüğünde çıkış işleme tamamlanmamış olabilir. Zaman uyumsuz olay işlemenin tamamlandığından emin olmak için, bu aşırı yüklemeden bir true aldıktan sonra parametre almayan aşırı yüklemeyi çağırınWaitForExit(). olayın Windows Forms uygulamalarda doğru şekilde işlendiğinden emin olmak Exited için özelliğini ayarlayınSynchronizingObject.

İlişkili bir işlemden çıkıldığında (normal veya anormal sonlandırma yoluyla işletim sistemi tarafından kapatılır), sistem işlemle ilgili yönetim bilgilerini depolar ve adlı WaitForExit(Int32)bileşene döner. Bileşen Process daha sonra çıkış işlemine kullanarak Handle öğesini içeren ExitTimebilgilere erişebilir.

İlişkili işlemden çıkıldığından, Handle bileşenin özelliği artık mevcut bir işlem kaynağını işaret etmemektedir. Bunun yerine tanıtıcı yalnızca işletim sisteminin işlem kaynağı hakkındaki bilgilerine erişmek için kullanılabilir. Sistem, bileşenler tarafından Process serbest bırakılmamış çıkışlı işlemlerin tanıtıcılarını biliyor, bu nedenle bileşen kaynakları özel olarak boşaltana kadar Process ve Handle bilgilerini bellekte tutarExitTime. Bu nedenle, bir örneği her çağırdığınızda Start , ilişkili işlem sonlandırıldığında ve artık bu işlemle ilgili herhangi bir Process yönetim bilgisine ihtiyacınız kalmadığında çağrısında Close bulunur. Close , çıkış işlemine ayrılan belleği serbest bırakır.

Ayrıca bkz.

Şunlara uygulanır

WaitForExit(TimeSpan)

Kaynak:
Process.cs
Kaynak:
Process.cs
Kaynak:
Process.cs

İşlem bileşenine, ilişkili işlemin çıkması için belirtilen süre boyunca beklemesini emreder.

public:
 bool WaitForExit(TimeSpan timeout);
public bool WaitForExit (TimeSpan timeout);
member this.WaitForExit : TimeSpan -> bool
Public Function WaitForExit (timeout As TimeSpan) As Boolean

Parametreler

timeout
TimeSpan

İlişkili işlemin çıkmasını bekleme süresi.

Döndürülenler

true ilişkili işlemden çıkıldıysa; aksi takdirde , false.

Açıklamalar

Açıklamalara bakın WaitForExit(Int32) .

Şunlara uygulanır