Pradėkite ką nors naudodamiesi procesu. Pradėkite nuo VB.NET

Pradėti metodas Procesas Objektas yra galbūt vienas iš labiausiai neįvertintų įrankių, prieinamų programuotojui. Kaip .NET metodas, Pradėti turi daugybę perkrovų, tai yra skirtingi parametrų rinkiniai, kurie tiksliai nustato, ką metodas daro. Dėl perkrovų galite nurodyti beveik visus parametrų rinkinius, kuriuos galbūt norėsite perduoti kitam procesui, kai jis prasidės.

Ką tu gali padaryti Procesas. Pradėti iš tikrųjų yra ribojamas tik procesų, kuriuos galite naudoti su juo. Jei norite rodyti tekstinį „ReadMe“ failą užrašų knygelėje, tai taip paprasta:

Procesas. Pradėti („ReadMe.txt“)
arba.
Procesas. Pradėti („užrašų knygelė“, „ReadMe.txt“)

Šiame pavyzdyje daroma prielaida, kad „ReadMe“ failas yra tame pačiame aplanke kaip ir programa, o „Notepad“ yra numatytoji .txt failų tipų programa ir jis yra sistemos aplinkos kelyje.

Procesas. Pradėkite panašiai kaip „Shell Command“ VB6

Programuotojams, susipažinusiems su „Visual Basic 6“, Procesas. Pradėti yra šiek tiek panašus į VB 6 Apvalkalas komanda. VB 6 naudotumėte ką nors tokio:

instagram viewer
lngPID = „Shell“ („MyTextFile.txt“, „vbNormalFocus“)

Naudojant procesą. Pradėti

Galite naudoti šį kodą maksimaliai paleisti „Notepad“ ir sukurti „ProcessStartInfo“ objektas, kurį galite naudoti tikslesniam valdymui:

Sumažinkite „ProcessProperties“ kaip naują „ProcessStartInfo“
„ProcessProperties“. FileName = "notepad"
„ProcessProperties“. Argumentai = "myTextFile.txt"
„ProcessProperties“. „WindowStyle = ProcessWindowStyle“. Maksimalus
Dim myProcess kaip procesas = procesas. Pradžia („ProcessProperties“)

Paslėpto proceso pradžia

Jūs netgi galite pradėti paslėptą procesą.

„ProcessProperties“. „WindowStyle = ProcessWindowStyle“. Paslėpta
Bet buk atsargus. Jei nepridėsite daugiau kodo norėdami baigti procesą, greičiausiai turėsite jį baigti užduočių tvarkytuvėje. Paslėpti procesai paprastai naudojami tik su procesais, kurie neturi jokios vartotojo sąsajos.

Proceso pavadinimo gavimas

Dirbti su Procesas. Pradėti kaip .NET objektas suteikia daug galimybių. Pvz., Galite gauti pradėto proceso pavadinimą. Šis kodas išvesties lange rodys „notepad“:

Dim myProcess kaip procesas = procesas. Pradėkite („MyTextFile.txt“) konsolę. „WriteLine“ („myProcess“. Proceso pavadinimas)
Tai buvo kažkas, ką galėjai ne daryti su VB6 Apvalkalas komandą, nes ji asinchroniškai paleido naują programą. Naudojant „WaitForExit“ gali sukelti atvirkštinę .NET problemą, nes jūs turite pradėti procesą naujoje gijoje, jei jums jo reikia vykdyti asinchroniškai. Pvz., Jei jums reikia, kad komponentai išliktų aktyvūs tokia forma, kurioje buvo paleistas procesas ir „WaitForExit“ buvo įvykdytas. Paprastai šie komponentai nebus aktyvūs. Užkoduokite ir įsitikinkite patys.

Vienas iš būdų priversti procesą sustabdyti yra naudoti Nužudyk metodas.

„myProcess“. Nužudyti ()

Šis kodas laukia dešimt sekundžių ir tada užbaigia procesą.

Tačiau kartais reikia priverstinio delsimo, kad procesas būtų baigtas, kad būtų išvengta klaidos.

„myProcess“. „WaitForExit“ (10000)
jei procesas neužbaigiamas
'10 sekundžių, nužudyk
Jei ne „myProcess“. HasExited Tada
„myProcess“. Nužudyti ()
Pabaiga Jei
Sriegimas. Siūlas. Miegas (1)
Konsolė. „WriteLine“ („Užrašinė baigėsi:“ _
& „myProcess“. „ExitTime“ ir _
Aplinka. Nauja linija & _
„Išėjimo kodas:“ ir _
„myProcess“. „ExitCode“)

Daugeliu atvejų tikriausiai yra gera idėja apdoroti Naudojant blokuoti, kad būtų išlaisvinti proceso naudojami ištekliai.

„MyProcess“ naudojimas kaip procesas = naujas procesas
'Jūsų kodas čia
Baigti naudoti

Kad visa tai būtų dar lengviau naudoti, yra net Procesas komponentas, kurį galite pridėti prie savo projekto, kad galėtumėte atlikti daug aukščiau parodytų dalykų projektavimo metu, o ne vykdyti.

Vienas iš dalykų, palengvinančių procesą, yra proceso keliami įvykiai, tokie kaip įvykis, kai procesas baigėsi. Taip pat galite pridėti tvarkyklę naudodami tokį kodą:

„leisti procesui kelti įvykius
„myProcess“. EnableRaisingEvents = Tiesa
'pridėti įvykių tvarkytoją
„AddHandler“ „myProcess“. Baigta, _
„AddressOf Me“. „ProcessExited“
Privatus antrinis procesasExited („ByVal“ siuntėjas kaip objektas, _
„ByVal e As“ sistema. „EventArgs“)
'Jūsų kodas čia
Pabaigos poskyris

Bet paprasčiausiai išsirinkti įvykį komponentui yra daug lengviau.