Începeți ceva folosind procesul. Începeți în VB.NET

start metoda Proces obiectul este probabil unul dintre cele mai subapreciate instrumente disponibile pentru un programator. Ca .NET metodă, start are o serie de supraîncărcări, care sunt diferite seturi de parametri care determină exact ce face metoda. Supraîncărcările vă permit să specificați aproape orice set de parametri pe care s-ar putea să doriți să treceți la un alt proces atunci când acesta începe.

Cu ce ​​poți face Proces. start este într-adevăr limitat doar de procesele pe care le puteți utiliza cu acesta. Dacă doriți să afișați fișierul ReadMe bazat pe text în Notepad, este la fel de ușor:

Proces. Start ( "Readme.txt")
sau.
Proces. Start („notepad”, „ReadMe.txt”)

Acest exemplu presupune că fișierul ReadMe se află în același dosar ca programul și că Notepad este aplicația implicită pentru tipurile de fișiere .txt și se află în calea mediului de sistem.

Proces. Începeți similar cu comanda Shell în VB6

Pentru programatorii familiarizați cu Visual Basic 6, Proces. start este oarecum ca VB 6 Coajă comanda. În VB 6, ați folosi ceva de genul:

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

Utilizarea procesului. start

Puteți utiliza acest cod pentru a porni Notepad maximizat și a crea un ProcessStartInfo obiect pe care îl puteți utiliza pentru un control mai precis:

Dim ProcessProperties ca nou ProcessStartInfo
ProcessProperties. FileName = "notepad"
ProcessProperties. Argumente = "myTextFile.txt"
ProcessProperties. WindowStyle = ProcessWindowStyle. maximizat
Dim myProcess As Process = Process. Start (ProcessProperties)

Pornirea unui proces ascuns

Puteți chiar să începeți un proces ascuns.

ProcessProperties. WindowStyle = ProcessWindowStyle. Ascuns
Dar fii atent. Dacă nu adăugați mai multe coduri pentru a încheia procesul, probabil că va trebui să îl încheiați în Task Manager. Procesele ascunse sunt utilizate în mod normal doar cu procesele care nu au niciun fel de interfață de utilizator.

Preluarea numelui unui proces

Lucrând cu Proces. start ca obiect .NET îți oferă multă capacitate. De exemplu, puteți prelua numele procesului început. Acest cod va afișa „notepad” în fereastra de ieșire:

Dim myProcess As Process = Process. Consola Start („MyTextFile.txt”) Consola. WriteLine (myProcess). Numele procesului)
Așa ați putut ceva nu face cu VB6 Coajă comanda deoarece a lansat noua aplicație în mod asincron. Utilizarea WaitForExit poate provoca problema inversă în .NET, deoarece trebuie să lansați un proces într-un nou thread dacă aveți nevoie de acesta pentru a se executa asincron. De exemplu, dacă aveți nevoie ca componentele să rămână active într-un formular în care a fost lansat un proces și WaitForExit a fost executat. De obicei, acele componente nu vor fi active. Codificați-l și vedeți-vă singuri.

O modalitate de a forța procesul de a opri este de a utiliza Ucide metodă.

myProcess. Ucide()

Acest cod așteaptă zece secunde și apoi încheie procesul.

Cu toate acestea, uneori este necesară o întârziere forțată pentru a permite finalizarea procesului ieșind pentru a evita o eroare.

myProcess. WaitForExit (10000)
'dacă procesul nu se finalizează în interior
'10 secunde, omoară-l
Dacă nu MyProcess. A expirat Apoi
myProcess. Ucide()
End If
Filetat. Fir. Somn (1)
Consolă. WriteLine („Notepad încheiat:„ _
& MyProcess. ExitTime & _
Mediu inconjurator. Linie nouă & _
"Cod de ieșire:" & _
myProcess. Exitcode)

În cele mai multe cazuri, este probabil o idee bună să vă puneți procesarea într-un Utilizarea bloc pentru a vă asigura că resursele utilizate de proces sunt eliberate.

Utilizarea myProcess ca proces = New Process
- Codul tău merge aici
Închei utilizarea

Pentru a face toate acestea și mai ușor de lucrat, există chiar un Proces componentă pe care o puteți adăuga la proiectul dvs., astfel încât să puteți face o mulțime de lucruri prezentate mai sus la timpul de proiectare, în loc de timpul de rulare.

Unul dintre lucrurile care fac acest lucru mult mai ușor este codificarea evenimentelor ridicate de proces, cum ar fi evenimentul când procesul a ieșit. Puteți adăuga, de asemenea, un handler folosind codul astfel:

'permite procesului să ridice evenimente
myProcess. EnableRaisingEvents = True
'adăugați un instrument de gestionare a evenimentelor
AddHandler myProcess. Ieșit, _
Adresa de la mine. ProcessExited
Sub-proces privat privat (expeditor ByVal ca obiect, _
Sistemul ByVal e As. EventArgs)
- Codul tău merge aici
Sub final

Dar simpla selectare a evenimentului pentru componentă este mult mai ușoară.