Börja något med processen. Börja i VB.NET

De Start metod för Bearbeta objektet är kanske ett av de mest undervärderade verktygen som finns tillgängliga för en programmerare. Som en .NETTO metod, Start har en serie överbelastningar, som är olika parametrar som bestämmer exakt vad metoden gör. Överbelastningarna låter dig specificera nästan alla parametrar som du kanske vill överföra till en annan process när den startar.

Vad du kan göra med Bearbeta. Start är egentligen bara begränsad av de processer du kan använda den. Om du vill visa din textbaserade ReadMe-fil i Notepad är det lika enkelt som:

Bearbeta. Start ( "ReadMe.txt")
eller.
Bearbeta. Start ("anteckningsblock", "ReadMe.txt")

Detta exempel antar att ReadMe-filen finns i samma mapp som programmet och att Notepad är standardapplikationen för .txt-filtyper, och den finns i systemmiljövägen.

Bearbeta. Börja på samma sätt som Shell Command i VB6

För programmerare som är bekanta med Visual Basic 6, Bearbeta. Start är något som VB 6 Skal kommando. I VB 6 skulle du använda något som:

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

Använda process. Start

Du kan använda den här koden för att starta Notepad maximerad och skapa en ProcessStartInfo objekt som du kan använda för mer exakt kontroll:

Dim ProcessProperties Som ny ProcessStartInfo
ProcessProperties. FileName = "anteckningsblock"
ProcessProperties. Argument = "myTextFile.txt"
ProcessProperties. WindowStyle = ProcessWindowStyle. Maximerad
Dim myProcess As Process = Process. Start (ProcessProperties)

Starta en dold process

Du kan till och med starta en dold process.

ProcessProperties. WindowStyle = ProcessWindowStyle. Dold
Men var försiktig. Om du inte lägger till mer kod för att avsluta processen måste du förmodligen avsluta den i Aktivitetshanteraren. Dolda processer används normalt bara med processer som inte har någon form av användargränssnitt.

Hämtar namnet på en process

Arbetar med Bearbeta. Start som .NET-objekt ger dig mycket kapacitet. Till exempel kan du hämta namnet på processen som startades. Den här koden visar "anteckningsblock" i utdatafönstret:

Dim myProcess As Process = Process. Start ("MyTextFile.txt") -konsol. WritLine (myProcess. Process namn)
Det här var något du kunde inte gör med VB6 Skal eftersom den lanserade den nya applikationen asynkront. Använder sig av WaitForExit kan orsaka det omvända problemet i .NET eftersom du måste starta en process i en ny tråd om du behöver den för att utföra asynkront. Om du till exempel behöver komponenterna förbli aktiva i en form där en process startades och WaitForExit blev avrättad. Vanligtvis kommer dessa komponenter inte att vara aktiva. Kod upp det och se själv.

Ett sätt att tvinga processen att stoppa är att använda Döda metod.

myProcess. Döda()

Denna kod väntar i tio sekunder och slutar sedan processen.

En tvångsfördröjning är emellertid ibland nödvändig för att låta processen slutföra avslutningen för att undvika ett fel.

myProcess. WaitForExit (10000)
"om processen inte slutförs inom
"10 sekunder, döda det
Om inte myProcess. HasExited Then
myProcess. Döda()
Sluta om
Gäng. Tråd. Sov (1)
Trösta. WritLine ("Anteckningar slutade:" _
& myProcess. ExitTime & _
Miljö. Ny linje & _
"Avsluta kod:" & _
myProcess. ExitCode)

I de flesta fall är det förmodligen en bra idé att lägga din behandling i en Använder sig av blockera för att säkerställa att resurserna som används av processen släpps.

Att använda myProcess As Process = Ny process
"Din kod går här
Avsluta med

För att göra allt detta ännu enklare att arbeta med finns det till och med en Bearbeta komponent som du kan lägga till i ditt projekt så att du kan göra mycket av det som visas ovan vid designtid istället för körtid.

En av de saker som detta underlättar mycket är kodning av händelser som tagits upp av processen, till exempel händelsen när processen har avslutats. Du kan också lägga till en hanterare med kod som denna:

"låt processen ta upp evenemang
myProcess. EnableRaisingEvents = True
"lägg till en avslutad händelsehanterare
AddHandler myProcess. Avslutad, _
AddressOf Me. ProcessExited
Private Sub ProcessExited (ByVal avsändare som objekt, _
ByVal e As System. EventArgs)
"Din kod går här
Avsluta under

Men det är mycket lättare att välja händelse för komponenten.

instagram story viewer