Process.WaitForExit Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
İ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) .