Start iets met proces. Begin in VB.NET

click fraud protection

De Begin methode van de Werkwijze object is mogelijk een van de meest ondergewaardeerde tools die beschikbaar zijn voor een programmeur. Als een .NETTO methode, Begin heeft een reeks overbelastingen, dit zijn verschillende sets parameters die precies bepalen wat de methode doet. Door de overbelasting kunt u zowat elke set parameters specificeren die u mogelijk aan een ander proces wilt doorgeven wanneer het start.

Waar je mee kunt doen Werkwijze. Begin wordt eigenlijk alleen beperkt door de processen die je ermee kunt gebruiken. Als u uw op tekst gebaseerde ReadMe-bestand in Kladblok wilt weergeven, is het zo eenvoudig als:

Werkwijze. Start ("ReadMe.txt")
of.
Werkwijze. Start ("notepad", "ReadMe.txt")

In dit voorbeeld wordt ervan uitgegaan dat het ReadMe-bestand zich in dezelfde map bevindt als het programma en dat Kladblok de standaardtoepassing is voor .txt-bestandstypen en zich in het systeemomgevingspad bevindt.

Werkwijze. Start vergelijkbaar met Shell Command in VB6

Voor programmeurs die bekend zijn met Visual Basic 6,

instagram viewer
Werkwijze. Begin lijkt enigszins op de VB 6 Shell commando. In VB 6 zou je zoiets gebruiken als:

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

Proces gebruiken. Begin

U kunt deze code gebruiken om Kladblok gemaximaliseerd te starten en een ProcessStartInfo object dat u kunt gebruiken voor een nauwkeurigere bediening:

Dim ProcessProperties als nieuwe ProcessStartInfo
ProcessProperties. FileName = "notepad"
ProcessProperties. Arguments = "myTextFile.txt"
ProcessProperties. WindowStyle = ProcessWindowStyle. Gemaximaliseerd
Dim myProcess As Process = Process. Start (ProcessProperties)

Een verborgen proces starten

Je kunt zelfs een verborgen proces starten.

ProcessProperties. WindowStyle = ProcessWindowStyle. Verborgen
Maar pas op. Tenzij u meer code toevoegt om het proces te beëindigen, moet u deze waarschijnlijk in Taakbeheer beëindigen. Verborgen processen worden normaal gesproken alleen gebruikt met processen die geen enkele gebruikersinterface hebben.

De naam van een proces ophalen

Werken met Werkwijze. Begin omdat een .NET-object veel mogelijkheden biedt. U kunt bijvoorbeeld de naam ophalen van het proces dat is gestart. Deze code geeft "Kladblok" weer in het uitvoervenster:

Dim myProcess As Process = Process. Start ("MyTextFile.txt") Console. WriteLine (myProcess. Proces naam)
Dit was iets wat je kon niet doen met de VB6 Shell commando omdat het de nieuwe applicatie asynchroon heeft gestart. Gebruik makend van WaitForExit kan het omgekeerde probleem veroorzaken in .NET omdat je een proces in een nieuwe thread moet starten als je het nodig hebt om asynchroon uit te voeren. Als u bijvoorbeeld de componenten nodig hebt om actief te blijven in een vorm waarin een proces is gestart en WaitForExit is geëxecuteerd. Normaal gesproken zijn die componenten niet actief. Codeer het en ontdek het zelf.

Een manier om het proces te stoppen, is door de Doden methode.

myProcess. Doden()

Deze code wacht tien seconden en beëindigt vervolgens het proces.

Soms is echter een geforceerde vertraging nodig om het proces te laten eindigen om een ​​fout te voorkomen.

myProcess. WaitForExit (10000)
'als het proces van binnen niet af is
'10 seconden, dood het
Zo niet myProcess. Is dan verlaten
myProcess. Doden()
Stop als
Threading. Draad. Slaap (1)
Troosten. WriteLine ("Kladblok beëindigd:" _
& myProcess. ExitTime & _
Milieu. Nieuwe lijn & _
"Afsluitcode:" & _
myProcess. ExitCode)

In de meeste gevallen is het waarschijnlijk een goed idee om uw verwerking in een Gebruik makend van blok om ervoor te zorgen dat de bronnen die door het proces worden gebruikt, worden vrijgegeven.

MyProcess As Process = New Process gebruiken
'Je code komt hier
Einde gebruik

Om dit allemaal nog gemakkelijker te maken om mee te werken, is er zelfs een Werkwijze component die u aan uw project kunt toevoegen, zodat u veel van de bovenstaande dingen kunt doen tijdens het ontwerpen in plaats van tijdens de uitvoering.

Een van de dingen die dit een stuk eenvoudiger maakt, is het coderen van gebeurtenissen die door het proces worden opgewekt, zoals het evenement wanneer het proces is beëindigd. U kunt ook een handler toevoegen met code zoals deze:

'laat het proces gebeurtenissen opwerpen
myProcess. EnableRaisingEvents = Waar
'voeg een Exited event handler toe
AddHandler myProcess. Verlaten, _
Adres van mij. ProcessExited
Private Sub ProcessExited (ByVal-afzender als object, _
ByVal e als systeem. EventArgs)
'Je code komt hier
Einde Sub

Maar het eenvoudig selecteren van het evenement voor het onderdeel is een stuk eenvoudiger.

instagram story viewer