alkaa menetelmä Käsitellä asiaa Object on mahdollisesti yksi ohjelmoijien aliarvioituimmista työkaluista. Kuten a.NETTO menetelmä, alkaa sisältää sarjan ylikuormituksia, jotka ovat erilaisia parametriryhmiä, jotka määrittävät tarkalleen mitä menetelmä tekee. Ylikuormitus antaa sinun määrittää melkein kaikki parametrijoukot, jotka haluat ehkä siirtää toiselle prosessille, kun se käynnistyy.
Mitä voit tehdä Käsitellä asiaa. alkaa on todella vain rajoitettu prosessien kanssa, joita voit käyttää sen kanssa. Jos haluat näyttää tekstipohjaisen ReadMe-tiedostosi Muistiossa, se on yhtä helppoa kuin:
Käsitellä asiaa. Aloita ( "ReadMe.txt")tai.
Käsitellä asiaa. Käynnistä ("notepad", "ReadMe.txt")
Tässä esimerkissä oletetaan, että ReadMe-tiedosto on samassa kansiossa kuin ohjelma ja että Notepad on .txt-tiedostotyyppien oletussovellus, ja se on järjestelmäympäristössä.
Käsitellä asiaa. Aloita samalla tavalla kuin VB6: n Shell Command
Ohjelmoijalle, joka tuntee Visual Basic 6: n, Käsitellä asiaa. alkaa on jonkin verran kuin VB 6 Kuori komento. VB 6: ssa käyttäisit jotain:
lngPID = Kuori ("MyTextFile.txt", vbNormalFocus)
Prosessin käyttäminen. alkaa
Voit käyttää tätä koodia käynnistääksesi Muistio maksimoidun ja luodaksesi ProcessStartInfo objekti, jota voit käyttää tarkempaan hallintaan:
Dim ProcessProperties kuin uusi ProcessStartInfo
ProcessProperties. FileName = "muistilappu"
ProcessProperties. Arguments = "myTextFile.txt"
ProcessProperties. WindowStyle = ProcessWindowStyle. maksimoitu
Himmennä myProcess prosessina = prosessi. Käynnistä (ProcessProperties)
Piilotetun prosessin käynnistäminen
Voit jopa käynnistää piilotetun prosessin.
ProcessProperties. WindowStyle = ProcessWindowStyle. kätkettyMutta ole varovainen. Ellet lisää koodia prosessin lopettamiseksi, sinun on todennäköisesti lopetettava se Tehtävienhallinnassa. Piilotettuja prosesseja käytetään yleensä vain prosesseissa, joissa ei ole minkäänlaista käyttöliittymää.
Prosessin nimen hakeminen
Yhteistyö Käsitellä asiaa. alkaa .NET-objektina antaa sinulle paljon valmiuksia. Voit esimerkiksi hakea käynnistetyn prosessin nimen. Tämä koodi näyttää "notepad" lähtöikkunassa:
Himmennä myProcess prosessina = prosessi. Käynnistä ("MyTextFile.txt") -konsoli. WriteLine (myProcess. ProcessName)Tämä oli jotain mitä voisit ei tehdä VB6: n kanssa Kuori komento, koska se käynnisti uuden sovelluksen asynkronisesti. käyttämällä WaitForExit voi aiheuttaa käänteisen ongelman .NET-verkossa, koska joudut käynnistämään prosessin uudessa säikeessä, jos tarvitset sitä suorittaakseen asynkronisesti. Esimerkiksi, jos tarvitset komponentteja pysymään aktiivisina muodossa, jossa prosessi käynnistettiin ja WaitForExit teloitettiin. Tavallisesti nämä komponentit eivät ole aktiivisia. Kooda se ja katso itse.
Yksi tapa pakottaa prosessi pysähtymään on käyttää Tappaa menetelmä.
myProcess. Tappaa()
Tämä koodi odottaa kymmenen sekuntia ja lopettaa sitten prosessin.
Pakkoviive on kuitenkin toisinaan välttämätöntä prosessin loppuunsaattamiseksi virheen välttämiseksi.
myProcess. WaitForExit (10000)
'jos prosessi ei ole valmis sisällä
'10 sekuntia, tappaa se
Jos ei myProcess. HasExited Sitten
myProcess. Tappaa()
Loppu Jos
Threading. Lanka. Sleep (1)
Konsoli. WriteLine ("Muistio päättyi:" _
& myProcess. ExitTime & _
Ympäristö. Uusi rivi & _
"Poistumiskoodi:" & _
myProcess. ExitCode)
Useimmissa tapauksissa on todennäköisesti hyvä idea laittaa käsittelysi käyttämällä estää prosessin käyttämien resurssien vapauttamisen.
MyProcessin käyttäminen prosessina = Uusi prosessi
'Koodisi menee tänne
Lopeta käyttö
Jotta tämän kaiken olisi vielä helpompaa työskennellä, on olemassa jopa Käsitellä asiaa komponentti, jonka voit lisätä projektiisi, jotta voit tehdä paljon yllä esitetyistä asioista suunnitteluaikana ajon ajan sijasta.
Yksi asioista, jotka tekevät siitä paljon helpompaa, on prosessin aiheuttamien tapahtumien, kuten prosessin päättymisen, koodaaminen. Voit myös lisätä käsittelijän seuraavalla koodilla:
"anna prosessin herättää tapahtumia
myProcess. EnableRaisingEvents = Totta
'lisää Exited event handler
AddHandler myProcess. Poistunut, _
AddressOf Me. ProcessExited
Yksityinen aliprosessiExited (ByVal-lähettäjä objektina, _
ByVal e As -järjestelmä. EventArgs)
'Koodisi menee tänne
End Sub
Mutta yksinkertaisesti tapahtuman valitseminen komponentille on paljon helpompaa.