Start noget ved hjælp af processen. Start i VB.NET

Det Start metode til Behandle objektet er muligvis et af de mest værdsatte værktøjer til rådighed for en programmør. Som en .NET metode, Start har en række overbelastninger, som er forskellige sæt parametre, der bestemmer nøjagtigt, hvad metoden gør. Overbelastningen lader dig specificere næsten ethvert sæt parametre, som du måske vil overføre til en anden proces, når den starter.

Hvad du kan gøre med Behandle. Start er egentlig kun begrænset af de processer, du kan bruge med det. Hvis du vil vise din tekstbaserede ReadMe-fil i Notepad, er det så let som:

Behandle. Start ( "ReadMe.txt")
eller.
Behandle. Start ("notepad", "ReadMe.txt")

Dette eksempel antager, at ReadMe-filen er i den samme mappe som programmet, og at Notepad er standardapplikationen til .txt-filtyper, og at den er i systemmiljøstien.

Behandle. Start svarende til Shell Command i VB6

For programmerere, der kender Visual Basic 6, Behandle. Start er lidt som VB 6 Skal kommando. I VB 6 vil du bruge noget som:

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

Brug af proces. Start

Du kan bruge denne kode til at starte Notepad maksimeret og oprette en ProcessStartInfo objekt, som du kan bruge til mere præcis kontrol:

Dim ProcessProperties Som ny ProcessStartInfo
ProcessProperties. FileName = "notepad"
ProcessProperties. Arguments = "myTextFile.txt"
ProcessProperties. WindowStyle = ProcessWindowStyle. maksimeret
Dim myProcess As Process = Process. Start (ProcessProperties)

Start af en skjult proces

Du kan endda starte en skjult proces.

ProcessProperties. WindowStyle = ProcessWindowStyle. Skjult
Men vær forsigtig. Medmindre du tilføjer flere kode for at afslutte processen, bliver du sandsynligvis nødt til at afslutte den i Task Manager. Skjulte processer bruges normalt kun med processer, der ikke har nogen form for en brugergrænseflade.

Henter navnet på en proces

Arbejder med Behandle. Start som .NET-objekt giver dig en masse muligheder. For eksempel kan du hente navnet på den proces, der blev startet. Denne kode viser "notepad" i outputvinduet:

Dim myProcess As Process = Process. Start ("MyTextFile.txt") Konsol. WriteLine (myProcess. ProcessName)
Dette var noget, du kunne ikke gør med VB6 Skal fordi den lancerede den nye applikation asynkront. Ved brug af WaitForExit kan forårsage det omvendte problem i .NET, fordi du skal starte en proces i en ny tråd, hvis du har brug for den til at udføre asynkront. For eksempel, hvis du har brug for, at komponenterne skal forblive aktive i en form, hvor en proces blev lanceret og WaitForExit blev henrettet. Normalt vil disse komponenter ikke være aktive. Kod det op og se selv.

En måde at tvinge processen til at stoppe er at bruge Dræbe metode.

myProcess. Dræbe()

Denne kode venter i ti sekunder og afslutter derefter processen.

Nogle gange er det dog nødvendigt med en forsinket forsinkelse for at lade processen afslutte afsluttet for at undgå en fejl.

myProcess. VentForExit (10000)
'hvis processen ikke afsluttes inden for
'10 sekunder, dræb det
Hvis ikke myProcess. HasExited derefter
myProcess. Dræbe()
Afslut Hvis
Threading. Tråd. Søvn (1)
Konsol. WriteLine ("Notepad sluttede:" _
& myProcess. ExitTime & _
Miljø. Ny linje & _
"Afslut kode:" & _
myProcess. ExitCode)

I de fleste tilfælde er det sandsynligvis en god ide at lægge din behandling i en Ved brug af blokere for at sikre, at de ressourcer, der bruges af processen, frigives.

Brug af myProcess As Process = Ny proces
'Din kode går her
Slut med at bruge

For at gøre alt dette endnu lettere at arbejde med er der endda en Behandle komponent, som du kan tilføje til dit projekt, så du kan gøre en masse af de ting, der er vist ovenfor på designtidspunkt i stedet for kørselstid.

En af de ting, som dette gør meget lettere, er kodning af hændelser, der er rejst af processen, f.eks. Begivenheden, når processen er afsluttet. Du kan også tilføje en behandler ved hjælp af kode som denne:

”tillade processen at rejse begivenheder
myProcess. EnableRaisingEvents = Sandt
'tilføj en Exited event handler
AddHandler myProcess. Forladt, _
AddressOf Me. ProcessExited
Privat underprocesExited (ByVal-afsender som objekt, _
ByVal e As System. EventArgs)
'Din kode går her
Afslut under

Men det er meget lettere at vælge begivenheden til komponenten.

instagram story viewer