Aracılığıyla paylaş


Process.WaitForExit Yöntem

Tanım

İlişkili işlemin çıkmasını 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ı engellemekten kaçınmak için olayını kullanın Exited .

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

Aşırı Yüklemeler

Name Description
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 sayıda milisaniye beklemesini yönerge verir.

WaitForExit(TimeSpan)

İşlem bileşenine, ilişkili işlemin çıkması için belirtilen süreyi beklemesini sağlar.

WaitForExit()

Kaynak:
Process.cs
Kaynak:
Process.cs
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ın ilişkili işlem sonlandırana kadar beklemesini sağlar. İşlemde diğer tüm yöntemler çağrıldıktan sonra çağrılmalıdır. Geçerli iş parçacığını engellemekten kaçınmak için olayını kullanın Exited .

Bu yöntem, bileşene işlemin ve olay işleyicilerinin çıkması için sonsuz 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 hiçbir zaman ileti döngüsüne girmeyecek şekilde yazılırsa, işletim sistemine ilişkili işlemi sonlandırma isteği işlenmeyebilir.

Uyarı

.NET Framework 3.5 ve önceki sürümlerinde aşırı WaitForExit() yükleme süresiz olarak değil milisaniye (yaklaşık 24 gün) boyunca MaxValue bekledi. 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, normal veya anormal bir sonlandırma yoluyla işlem sistemi tarafından 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 bilgilerini 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ı algılar, 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ın Close . 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
Kaynak:
Process.cs
Kaynak:
Process.cs

Bileşene Process , ilişkili işlemin çıkması için belirtilen sayıda milisaniye beklemesini yönerge verir.

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 çıkışını beklemek için milisaniye cinsinden süre. 0 değeri anında bir dönüş, -1 değeri ise 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 bir negatif sayıdır ve bu da sonsuz zaman aşımını temsil eder.

Örnekler

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

Açıklamalar

WaitForExit(Int32) geçerli iş parçacığının ilişkili işlem sonlandırana kadar beklemesini sağlar. İşlemde diğer tüm yöntemler çağrıldıktan sonra çağrılmalıdır. Geçerli iş parçacığını engellemekten kaçınmak 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 sağlar. sonlandırma isteği reddedildiği için 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.

Uyarı

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

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(). Windows Forms uygulamalarında olayın doğru şekilde işlendiğinden Exited emin olmak için özelliğini ayarlayın SynchronizingObject .

İlişkili bir işlemden çıkıldığında (normal veya anormal sonlandırma yoluyla işletim sistemi tarafından kapatıldığında), 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 bilgilerini 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ı algılar, 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ın Close . 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
Kaynak:
Process.cs
Kaynak:
Process.cs

İşlem bileşenine, ilişkili işlemin çıkması için belirtilen süreyi beklemesini sağlar.

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ı için beklenme 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