The Začni metoda Proces Predmet je verjetno eno najbolj podcenjenih orodij, ki je na voljo programerju. Kot .MREŽA metoda, Začni ima vrsto preobremenitev, ki so različni nizi parametrov, ki natančno določajo, kaj počne metoda. Preobremenitve vam omogočajo, da natančno določite kateri koli niz parametrov, ki jih boste morda želeli prenesti v drug postopek, ko se začne.
Kaj lahko storite Proces. Začni je v resnici omejen samo s procesi, ki jih lahko uporabljate z njim. Če želite svojo besedilno datoteko ReadMe prikazati v Beležnici, je tako enostavno kot:
Proces. Start ("ReadMe.txt")ali.
Proces. Začetek ("beležnica", "ReadMe.txt")
Ta primer predpostavlja, da je datoteka ReadMe v isti mapi kot program in da je Notepad privzeta aplikacija za vrste datotek .txt in je na poti do sistemskega okolja.
Proces. Začnite podobno kot ukaz Shell Command v VB6
Za programerje, seznanjene z Visual Basic 6, Proces. Začni je nekako podoben VB 6 Školjka ukaz. V VB 6 bi uporabil nekaj takega:
lngPID = Shell ("MyTextFile.txt", vbNormalFocus)
Uporaba procesa. Začni
S to kodo lahko zaženete največji Notepad in ustvarite ProcessStartInfo predmet, ki ga lahko uporabite za natančnejši nadzor:
Dim ProcessProperties kot nov ProcessStartInfo
Procesne lastnosti. FileName = "beležka"
Procesne lastnosti. Argumenti = "myTextFile.txt"
Procesne lastnosti. WindowStyle = ProcessWindowStyle. Maksimirano
Zatemni myProcess kot proces = proces. Začetek (ProcessProperties)
Zagon skritega procesa
Lahko celo začnete skriti postopek.
Procesne lastnosti. WindowStyle = ProcessWindowStyle. SkritVendar bodite previdni. Če ne dodate več kode za zaključek postopka, ga boste verjetno morali končati v upravitelju opravil. Skriti procesi se običajno uporabljajo samo s procesi, ki nimajo nikakršnega uporabniškega vmesnika.
Pridobivanje imena procesa
Delati z Proces. Začni kot .NET objekt vam daje veliko zmogljivosti. Na primer, lahko dobite ime procesa, ki se je začel. Ta koda bo v izhodnem oknu prikazala "beležko":
Zatemni myProcess kot proces = proces. Start ("MyTextFile.txt") konzola. WriteLine (myProcess). ProcessName)To je bilo nekaj, kar si lahko ne naredite z VB6 Školjka ukaz, ker je asinhrono zagnala novo aplikacijo. Uporaba Počakajte forExit lahko povzroči obratno težavo v .NET, ker morate zagnati postopek v novi niti, če ga potrebujete za asinhrono izvajanje. Na primer, če potrebujete, da komponente ostanejo aktivne v obliki, v kateri je bil sprožen postopek in Počakajte forExit je bil usmrčen. Te komponente običajno ne bodo aktivne. Zapišite ga in se prepričajte sami.
Eden od načinov za zaustavitev postopka je uporaba Ubij metoda.
myProcess. Kill ()
Ta koda počaka deset sekund in nato postopek konča.
Vendar je včasih potrebna prisilna zamuda, da se postopek zaključi, da se prepreči napaka.
myProcess. PočakajteForExit (10000)
"če se postopek ne zaključi znotraj
'10 sekund, ubij
Če ni mojProces. HasExited затем
myProcess. Kill ()
Konec Če
Niti. Niti. Spanje (1)
Konzola. WriteLine ("Beležnica je končana:" _
& myProcess. ExitTime & _
Okolje. NewLine & _
"Izhodna koda:" & _
myProcess. ExitCode)
V večini primerov je verjetno dobro, da obdelavo postavite v Uporaba blokirati, da se zagotovi sprostitev virov, ki jih uporablja postopek.
Uporaba myProcess kot procesa = Nov postopek
"Vaša koda je tukaj
Končaj uporabo
Da bi vse to še lažje delali, obstaja celo a Proces komponento, ki jo lahko dodate v svoj projekt, tako da lahko v načrtovalnem času namesto časa izvajanja počnete veliko zgoraj prikazanih stvari.
Ena izmed stvari, zaradi katerih je to veliko lažje, je kodiranje dogodkov, ki jih sproži postopek, na primer dogodek, ko je postopek končal. Orodje lahko dodate tudi s kodo, kot je ta:
"dovolite procesu, da sproži dogodke
myProcess. EnableRaisingEvents = Res
doda dodatek za obdelavo dogodkov
AddHandler myProcess. Izstopil, _
Naslov mene. ProcessExited
Zasebni podprocesExited (pošiljatelj ByVal kot predmet, _
ByVal e As System. EventArgs)
"Vaša koda je tukaj
Končni pod
Toda preprosto izbrati dogodek za komponento je veliko lažje.