Az Rajt módszer Folyamat Az objektum valószínűleg az egyik legkevésbé elfogadott eszköz, amely a programozók számára elérhető. Mint a .HÁLÓ eljárás, Rajt egy sor túlterhelést tartalmaz, amelyek különféle paramétercsoportok, amelyek pontosan meghatározzák, hogy a módszer mit csinál. A túlterhelések lehetővé teszik, hogy pontosan meghatározza azokat a paraméterkészleteket, amelyeket érdemes átadni egy másik folyamatnak, amikor az indul.
Mit lehet csinálni? Folyamat. Rajt valójában csak azok a folyamatok korlátozzák, amelyeket vele használhat. Ha megjeleníteni szeretné a szövegalapú ReadMe fájlt a Jegyzettömbön, akkor ez olyan egyszerű, mint:
Folyamat. Kezdés ( "ReadMe.txt")vagy.
Folyamat. Start ("Jegyzettömb", "ReadMe.txt")
Ez a példa feltételezi, hogy a ReadMe fájl ugyanabban a mappában található, mint a program, és hogy a Notepad az alapértelmezett alkalmazás a .txt fájltípusokra, és a rendszer környezeti útjában található.
Folyamat. Kezdje a Shell Command-hoz hasonlóan a VB6-ban
A Visual Basic 6 programot ismerő programozók számára
Folyamat. Rajt kissé olyan, mint a VB 6 Héj parancs. A VB 6-ban valami hasonlót használna:lngPID = Héj ("MyTextFile.txt", vbNormalFocus)
A folyamat használata. Rajt
Ezt a kódot használhatja a Jegyzettömb maximalizálásához és a ProcessStartInfo objektum, amelyet a pontosabb irányításhoz használhat:
Dim ProcessProperties mint új ProcessStartInfo
ProcessProperties. FileName = "jegyzettömb"
ProcessProperties. Arguments = "myTextFile.txt"
ProcessProperties. WindowStyle = ProcessWindowStyle. maximalizált
Dim myProcess Mint Process = Folyamat. Start (ProcessProperties)
Rejtett folyamat indítása
Még el is indíthat rejtett folyamatot.
ProcessProperties. WindowStyle = ProcessWindowStyle. RejtettDe légy óvatos. Ha nem ad hozzá további kódot a folyamat befejezéséhez, akkor valószínűleg be kell fejeznie azt a Feladatkezelőben. A rejtett folyamatokat általában csak olyan folyamatokkal használják, amelyeknek nincs felhasználói felületük.
A folyamat nevének lekérése
Dolgozni vele Folyamat. Rajt mint .NET objektum sok képességet nyújt. Például lekérheti a megkezdett folyamat nevét. Ez a kód megjeleníti a "jegyzettömböt" a kimeneti ablakban:
Dim myProcess Mint Process = Folyamat. Indítsa el a ("MyTextFile.txt") konzolt. WriteLine (myProcess. folyamatnév)Ez volt valami, amit tudtál nem köze a VB6-hoz Héj parancs, mert aszinkron módon indította el az új alkalmazást. használata WaitForExit fordított problémát okozhat a .NET-ben, mert egy új szálban kell elindítania egy folyamatot, ha erre van szüksége aszinkron módon. Például, ha szüksége van az összetevőkre, hogy aktívak maradjanak olyan formában, ahol egy folyamat elindult és WaitForExit kivégezték. Rendszerint ezek az alkatrészek nem lesznek aktívak. Kódolja fel és nézd meg magad.
A folyamat leállításának egyik módja a Megöl eljárás.
myProcess. Megöl()
Ez a kód tíz másodpercre vár, majd befejezi a folyamatot.
A hiba elkerülése érdekében azonban időnként kényszerítő késleltetés szükséges.
myProcess. WaitForExit (10000)
'ha a folyamat nem fejeződik be belül
'10 másodperc, öld meg
Ha nem myProcess. HasExited Akkor
myProcess. Megöl()
Vége If
Threading. Cérna. Alvás (1)
Konzol. WriteLine ("Jegyzettömb véget ért:" _
& myProcess. ExitTime & _
Környezet. Új sor & _
"Kilépési kód:" & _
myProcess. kilépési kód)
A legtöbb esetben valószínűleg jó ötlet a feldolgozást egy használata blokkolja annak biztosítását, hogy a folyamat által használt erőforrások felszabaduljanak.
A myProcess használata folyamatként = új folyamat
- A kódod ide megy
Használat befejezése
Ahhoz, hogy mindez még könnyebben működjön együtt, van még egy Folyamat olyan összetevő, amelyet hozzáadhat a projekthez, így a fent bemutatott dolgok sokkal a tervezési és a futási idő helyett megtehető.
Az egyik dolog, amely ezt sokkal megkönnyíti, a folyamat által felvetett események kódolása, például az esemény, amikor a folyamat kilépett. Az alábbi kóddal kezelőt is felvehet:
"hagyja, hogy a folyamat eseményeket felvegyen
myProcess. EnableRaisingEvents = Igaz
'adjon hozzá egy kilépő eseménykezelőt
AddHandler myProcess. Kilép, _
AddressOf Me. ProcessExited
Private Sub ProcessExited (ByVal feladó objektumként, _
ByVal e As rendszer. EventArgs)
- A kódod ide megy
Befejezés Sub
De egyszerűen az esemény kiválasztása a komponenshez sokkal könnyebb.