Alusta meetod Protsess objekt on võib-olla üks programmeerija jaoks kõige vähemhuvitatud tööriistu. Nagu .NET meetod, Alusta on ülekoormuste seeria, mis on erinevad parameetrite kogumid, mis määravad täpselt, mida meetod teeb. Ülekoormused võimaldavad teil täpsustada peaaegu kõik parameetrite kogumid, mida võiksite selle käivitamisel mõnele teisele protsessile üle anda.
Mida saate teha Protsess. Alusta on tõesti piiratud ainult protsessidega, mida saate sellega kasutada. Kui soovite oma tekstipõhist ReadMe-faili Notepadis kuvada, on see sama lihtne kui:
Protsess. Alusta ("ReadMe.txt")või.
Protsess. Start ("notepad", "ReadMe.txt")
Selle näite puhul eeldatakse, et fail ReadMe asub samas kaustas kui programm ja et Notepad on .txt-failitüüpide vaikelurakendus ning see asub süsteemikeskkonna teel.
Protsess. Käivitage sarnaselt VB6 Shelli käsuga
Programmeerijatele, kes tunnevad Visual Basic 6 Protsess. Alusta on mõnevõrra nagu VB 6 Koor käsk. VB 6-s kasutaksite midagi sellist:
lngPID = kest ("MyTextFile.txt", vbNormalFocus)
Protsessi kasutamine. Alusta
Selle koodi abil saate Notepadi maksimeerida ja luua a ProcessStartInfo objekt, mida saate kasutada täpsemaks juhtimiseks:
Tühjendage protsessiomadusi uue protsessina StartInfo
Protsessipinnad. FileName = "notepad"
Protsessipinnad. Arguments = "myTextFile.txt"
Protsessipinnad. WindowStyle = ProcessWindowStyle. Maksimeeritud
Dim myProcess kui protsess = protsess. Alusta (ProcessProperties)
Varjatud protsessi käivitamine
Võite isegi alustada varjatud protsessi.
Protsessipinnad. WindowStyle = ProcessWindowStyle. VarjatudAga ole ettevaatlik. Kui te protsessi lisamiseks täiendavat koodi ei lisa, peate selle tõenäoliselt tööhalduris lõpetama. Varjatud protsesse kasutatakse tavaliselt ainult koos protsessidega, millel pole mingit kasutajaliidest.
Protsessi nime hankimine
Tõõtan koos Protsess. Alusta kuna .NET-objekt annab teile palju võimalusi. Näiteks võite hankida käivitatud protsessi nime. Selle koodi kuvatakse väljundiaknas "notepad":
Dim myProcess kui protsess = protsess. Käivitage ("MyTextFile.txt") konsool. WriteLine (myProcess. ProcessName)See oli midagi, mida sa suutsid mitte teha VB6-ga Koor, kuna see käivitas uue rakenduse asünkroonselt. Kasutades WaitForExit võib põhjustada .NET-i vastupidise probleemi, kuna peate protsessi käivitama uues lõimes, kui teil on seda vaja asünkroonselt käivitada. Näiteks kui teil on vaja, et komponendid püsiksid aktiivsed kujul, kus protsess käivitati ja WaitForExit hukati. Tavaliselt ei ole need komponendid aktiivsed. Kodeerige see üles ja vaadake ise.
Üks viis protsessi peatamiseks on selle kasutamine Tapa meetod.
myProcess. Tapa ()
See kood ootab kümme sekundit ja seejärel lõpetab protsessi.
Kuid mõnikord on vaja sundviivitust, et võimaldada protsessil väljumise lõpetada, et viga vältida.
myProcess. WaitForExit (10000)
'kui protsess ei lõpe
10 sekundit, tapa ära
Kui mitte myProcess. HasExited Siis
myProcess. Tapa ()
Lõpeta If
Keermestamine. Niit. Magama (1)
Konsool. WriteLine ("Märkmiku lõpp:" _
& myProcess. ExitTime & _
Keskkond. Uus rida & _
"Väljumiskood:" & _
myProcess. ExitCode)
Enamikul juhtudel on tõenäoliselt hea mõte panna oma töötlemine a-sse Kasutades blokeerida protsessi kasutatavate ressursside vabastamise tagamiseks.
MyProcessi kasutamine protsessina = uus protsess
'Sinu kood läheb siia
Lõpetage kasutamine
Selle kõige töö hõlpsamaks muutmiseks on olemas isegi a Protsess komponent, mille saate oma projekti lisada, nii et saate teha palju ülaltoodud asju projekteerimise ajal, mitte käitusajana.
Üks asi, mis selle palju lihtsamaks teeb, on protsessi tõstatatud sündmuste kodeerimine, näiteks sündmus, kui protsess on väljunud. Võite ka käitleja lisada, kasutades järgmist koodi:
'võimaldada protsessil sündmusi esile kutsuda
myProcess. EnableRaisingEvents = Tõsi
'lisage sündmuste lõpetaja
AddHandler myProcess. Välja, _
AddressOf Me. ProcessExited
Privaatne alamprotsessExited (ByVal saatja objektina, _
ByVal e As süsteem. EventArgs)
'Sinu kood läheb siia
Lõpu alam
Kuid lihtsalt komponendi jaoks sündmuse valimine on palju lihtsam.