Най- начало метод на процес обект вероятно е един от най-неоценените инструменти, достъпни за програмист. Като .NET метод, начало има поредица от претоварвания, които са различни набори от параметри, които определят точно какво прави методът. Претоварванията ви позволяват да посочите почти всеки набор от параметри, които бихте могли да искате да предадете на друг процес при стартирането му.
Какво можете да направите Process. начало наистина е ограничен само от процесите, които можете да използвате с него. Ако искате да покажете текстовия си файл ReadMe в Notepad, това е толкова лесно, колкото:
Process. Започнете ( "ReadMe.txt")или.
Process. Старт ("бележник", "ReadMe.txt")
Този пример предполага, че файлът ReadMe е в същата папка като програмата и че Notepad е приложението по подразбиране за .txt файлови типове и е в пътя на системната среда.
Process. Започнете подобно на командата Shell във VB6
За програмисти, запознати с Visual Basic 6, Process. начало донякъде прилича на VB 6 черупка команда. Във VB 6 бихте използвали нещо като:
lngPID = Shell ("MyTextFile.txt", vbNormalFocus)
Използване на Процес. начало
Можете да използвате този код, за да стартирате максимално Notepad и да създадете ProcessStartInfo обект, който можете да използвате за по-прецизен контрол:
Dim ProcessProperties като нов ProcessStartInfo
ProcessProperties. FileName = "бележник"
ProcessProperties. Аргументи = "myTextFile.txt"
ProcessProperties. WindowStyle = ProcessWindowStyle. Максимално увеличен
Затъмнете myProcess като процес = процес. Старт (ProcessProperties)
Стартиране на скрит процес
Можете дори да започнете скрит процес.
ProcessProperties. WindowStyle = ProcessWindowStyle. скритНо внимавай. Освен ако не добавите повече код, за да прекратите процеса, вероятно ще трябва да го приключите в Task Manager. Скритите процеси обикновено се използват само с процеси, които нямат никакъв потребителски интерфейс.
Извличане на името на процес
Работещ с Process. начало като .NET обект ви дава много възможности. Например, можете да извлечете името на процеса, който е стартиран. Този код ще изведе "бележник" в изходния прозорец:
Затъмнете myProcess като процес = процес. Старт ("MyTextFile.txt") конзола. WriteLine (myProcess). ProcessName)Това беше нещо, което можехте не направете с VB6 черупка команда, защото стартира новото приложение асинхронно. Използвайки WaitForExit може да причини обратен проблем в .NET, защото трябва да стартирате процес в нова тема, ако се нуждаете от него, за да се изпълни асинхронно. Например, ако имате нужда компонентите да останат активни във форма, в която е стартиран процес и WaitForExit беше екзекутиран. Обикновено тези компоненти няма да бъдат активни. Кодирайте го и се уверете сами.
Един от начините за принудително спиране на процеса е използването на Kill метод.
myProcess. Kill ()
Този код чака десет секунди и след това приключва процеса.
Понякога обаче е необходимо принудително забавяне, за да може процесът да приключи, за да се избегне грешка.
myProcess. ИзчакайтеForExit (10000)
„ако процесът не завърши в рамките на
'10 секунди, убий го
Ако не myProcess. HasExited then
myProcess. Kill ()
Край Ако
Threading. Нишка. Сън (1)
Console. WriteLine ("Бележникът приключи:" _
& myProcess. ExitTime & _
Заобикаляща среда. Нова линия & _
"Код за излизане:" & _
myProcess. ExitCode)
В повечето случаи вероятно е добра идея да поставите обработката си в Използвайки блок, за да се гарантира, че ресурсите, използвани от процеса, са освободени.
Използване на myProcess като процес = нов процес
„Кодът ви идва тук
Прекратяване на използването
За да направите всичко това още по-лесно да работите, има дори a процес компонент, който можете да добавите към вашия проект, за да можете да правите много от нещата, показани по-горе по време на проектиране, вместо време за изпълнение.
Едно от нещата, които това прави много по-лесно, е кодирането на събития, повдигнати от процеса, като събитието, когато процесът е излязъл. Можете също да добавите манипулатор, като използвате код като този:
„позволете на процеса да повдига събития
myProcess. EnableRaisingEvents = True
'добавете обработващо събитие на Exited
AddHandler myProcess. Излез, _
AddressOf Me. ProcessExited
Частен подпроцесExited (ByVal подател като обект, _
ByVal e като система. EventArgs)
„Кодът ви идва тук
Край Sub
Но просто избирането на събитието за компонента е много по-лесно.