Süreci Kullanarak Bir Şey Başlatın. VB.NET'te başlat

Başlat yöntemi süreç nesne muhtemelen bir programcı için mevcut olan en az takdir edilmeyen araçlardan biridir. Olarak . yöntem, Başlat yöntemin tam olarak ne yaptığını belirleyen farklı parametre setleri olan bir dizi aşırı yüke sahiptir. Aşırı yükler, başladığında başka bir işleme geçmek isteyebileceğiniz herhangi bir parametre setini belirtmenize izin verir.

Ne yapabilirsiniz? Süreç. Başlat gerçekten sadece onunla kullanabileceğiniz süreçlerle sınırlıdır. Metin tabanlı ReadMe dosyanızı Not Defteri'nde görüntülemek istiyorsanız, bu kadar kolay:

Süreç. Başlangıç ​​( "ReadMe.txt")
veya.
Süreç. Başlat ("not defteri", "ReadMe.txt")

Bu örnek, ReadMe dosyasının programla aynı klasörde olduğunu ve Not Defteri'nin .txt dosya türleri için varsayılan uygulama olduğunu ve sistem ortam yolunda olduğunu varsayar.

Süreç. VB6'da Kabuk Komutuna Benzer Başlat

Visual Basic 6'yı bilen programcılar için, Süreç. Başlat biraz VB 6'ya benziyor Kabuk Komut. VB 6'da şöyle bir şey kullanırsınız:

lngPID = Kabuk ("MyTextFile.txt", vbNormalFocus)
instagram viewer

Süreci Kullanma. Başlat

Bu kodu Not Defteri'ni en üst düzeye çıkarmak ve bir not defteri oluşturmak için kullanabilirsiniz. ProcessStartInfo daha hassas kontrol için kullanabileceğiniz nesne:

ProcessProperties'i Yeni ProcessStartInfo Olarak Azalt
ProcessProperties. FileName = "not defteri"
ProcessProperties. Bağımsız Değişkenler = "myTextFile.txt"
ProcessProperties. WindowStyle = ProcessWindowStyle. Maximized
MyProcess As Process = İşlem Dim. Başlat (ProcessProperties)

Gizli Bir Süreci Başlatma

Gizli bir işlem bile başlatabilirsiniz.

ProcessProperties. WindowStyle = ProcessWindowStyle. Gizli
Ama dikkat et. İşlemi sonlandırmak için daha fazla kod eklemediğiniz sürece, muhtemelen Görev Yöneticisi'nde sonlandırmanız gerekir. Gizli işlemler normalde yalnızca herhangi bir kullanıcı arabirimi olmayan süreçlerle kullanılır.

Bir İşlemin Adını Alma

İle çalışan Süreç. Başlat .NET nesnesi olarak size birçok özellik sunar. Örneğin, başlatılan işlemin adını alabilirsiniz. Bu kod, çıkış penceresinde "not defteri" görüntüler:

MyProcess As Process = İşlem Dim. Başlat ("MyTextFile.txt") Konsolu. WriteLine (işlemim. İşlem adı)
Bu yapabileceğin bir şeydi değil VB6 ile yapın Kabuk çünkü yeni uygulamayı eşzamansız olarak başlattı. kullanma WaitForExit zaman uyumsuz olarak yürütmek için gerekiyorsa yeni bir iş parçacığında bir işlem başlatmak zorunda çünkü. NET'te ters soruna neden olabilir. Örneğin, bileşenlerin bir işlemin başlatıldığı bir biçimde etkin kalması gerekiyorsa ve WaitForExit idam edildi. Normalde, bu bileşenler etkin olmayacaktır. Kodlayın ve kendiniz görün.

Süreci durmaya zorlamanın bir yolu, Öldürmek yöntem.

myProcess. Öldürmek()

Bu kod on saniye bekler ve işlemi sonlandırır.

Ancak, bazen bir hatadan kaçınmak için işlemin tamamlanmasını sağlamak için zorlamalı bir gecikme gerekir.

myProcess. BekleÇık (10000)
'süreç içinde tamamlanmazsa
10 saniye, öldür
İşlemim Değilse. Sonra HasExited
myProcess. Öldürmek()
End If
Threading. Konu. Uyku (1)
Konsol. WriteLine ("Not defteri bitti:" _
& myProcess. ExitTime & _
Çevre. Yeni hat & _
"Çıkış Kodu:" & _
myProcess. ExitCode)

Çoğu durumda, işleminizi bir kullanma işlem tarafından kullanılan kaynakların serbest bırakılmasını sağlamak için engeller.

MyProcess'i İşlem Olarak Kullanma = Yeni İşlem
'Kodunuz buraya geliyor
Kullanmayı Sonlandır

Tüm bunların daha kolay çalışmasını sağlamak için süreç projenize ekleyebileceğiniz bileşen, böylece çalışma zamanı yerine tasarım zamanında yukarıda gösterilen birçok şeyi yapabilirsiniz.

Bunun çok daha kolay hale getirdiği şeylerden biri, sürecin çıktığı olay gibi süreç tarafından ortaya çıkan olayları kodlamaktır. Bunun gibi kodu kullanarak bir işleyici de ekleyebilirsiniz:

'sürecin olayları yükseltmesine izin ver
myProcess. EnableRaisingEvents = Doğru
'Exited olay işleyicisi ekle
AddHandler myProcess. Çıkıldı, _
Bana Adres. ProcessExited
Private Sub ProcessExited (Nesne Olarak ByVal göndericisi, _
ByVal e As Sistemi. EventArgs)
'Kodunuz buraya geliyor
End Sub

Ancak bileşen için olayı seçmek çok daha kolaydır.