התחל משהו באמצעות תהליך. התחל ב- VB.NET

click fraud protection

ה התחל שיטת ה- תהליך האובייקט הוא אולי אחד הכלים המוערכים ביותר העומדים לרשות מתכנת. כ .רשת שיטה, התחל יש סדרה של עומסי יתר, שהם קבוצות פרמטרים שונות שקובעות בדיוק מה עושה השיטה. העומס יתר מאפשר לך לציין כמעט כל מערך פרמטרים שתרצה להעביר לתהליך אחר כשתתחיל.

מה אתה יכול לעשות תהליך. התחל הוא מוגבל רק על ידי התהליכים שאתה יכול להשתמש בו. אם אתה רוצה להציג את קובץ ה- ReadMe מבוסס הטקסט בפנקס הרשימות, זה קל כמו:

תהליך. התחל ("ReadMe.txt")
או.
תהליך. התחל ("פנקס רשימות", "ReadMe.txt")

דוגמה זו מניחה שקובץ ReadMe נמצא באותה תיקיה של התוכנית וכי פנקס הרשימות הוא יישום ברירת המחדל עבור סוגי קבצי .txt, והוא נמצא בנתיב סביבת המערכת.

תהליך. התחל דומה לפקודת מעטפת ב- VB6

עבור מתכנתים המכירים את Visual Basic 6, תהליך. התחל דומה במקצת ל- VB 6 צדף פקודה. ב- VB 6, היית משתמש במשהו כמו:

lngPID = מעטפת ("MyTextFile.txt", vbNormalFocus)

באמצעות תהליך. התחל

אתה יכול להשתמש בקוד זה כדי להפעיל את פנקס הרשימות בצורה מקסימאלית וליצור ProcessStartInfo אובייקט בו תוכלו להשתמש לבקרה מדויקת יותר:

אפלולי תהליכים מעומדים כתהליך חדש
instagram viewer

תכונות תהליכים. FileName = "פנקס רשימות"
תכונות תהליכים. ארגומנטים = "myTextFile.txt"
תכונות תהליכים. WindowStyle = ProcessWindowStyle. ממקסם
עמעום myProcess כתהליך = תהליך. התחל (ProcessProperties)

התחלת תהליך נסתר

אתה יכול אפילו להתחיל בתהליך מוסתר.

תכונות תהליכים. WindowStyle = ProcessWindowStyle. מוסתר
אבל תהיה זהיר. אלא אם תוסיף קוד נוסף לסיום התהליך, סביר להניח שתצטרך לסיים אותו במנהל המשימות. תהליכים נסתרים משמשים בדרך כלל רק עם תהליכים שאין להם ממשק משתמש כלשהו.

אחזור שם התהליך

עובד עם תהליך. התחל כאובייקט NET מעניק לך יכולת רבה. לדוגמה, באפשרותך לאחזר את שם התהליך שהתחיל. קוד זה יציג "פנקס רשימות" בחלון הפלט:

עמעום myProcess כתהליך = תהליך. התחל ("MyTextFile.txt") מסוף. WritLine (myProcess. שם התהליך)
זה היה משהו שאתה יכול לא לעשות עם ה- VB6 צדף כיוון שהשיקה את היישום החדש בצורה סינכרונית. באמצעות WaitForExit יכול לגרום לבעיה ההפוכה ב- .NET מכיוון שעליך להפעיל תהליך בשרשור חדש אם אתה זקוק לו לביצוע באופן אסינכרוני. לדוגמה, אם אתה זקוק לרכיבים להישאר פעילים בצורה בה הושק תהליך ו WaitForExit הוצא להורג. בדרך כלל, רכיבים אלה לא יהיו פעילים. קודו אותו ותראו בעצמכם.

אחת הדרכים לאלץ את התהליך להפסיק היא להשתמש ב- להרוג שיטה.

myProcess. להרוג ()

קוד זה ממתין עשר שניות ואז מסיים את התהליך.

עם זאת, לעיתים יש צורך בעיכוב מאולץ בכדי לאפשר לתהליך להסתיים ביציאה כדי למנוע שגיאה.

myProcess. WaitForExit (10000)
'אם התהליך לא מסתיים בתוכו
"10 שניות, תהרוג את זה
אם לא. HasExited אז
myProcess. להרוג ()
סוף אם
הברגה. חוט. שינה (1)
קונסולה. WriteLine ("פנקס הרשימות הסתיים:" _
& myProcess. ExitTime & _
סביבה. שורה חדשה & _
"קוד יציאה:" & _
myProcess. יציאה מקוד)

ברוב המקרים, זה כנראה רעיון טוב להכניס את העיבוד שלך ל באמצעות חסום כדי להבטיח שהמשאבים המשמשים את התהליך ישוחררו.

שימוש ב- myProcess כתהליך = תהליך חדש
'הקוד שלך כאן
סיום השימוש

כדי להקל על העבודה עוד יותר עם זה, יש אפילו א תהליך רכיב שתוכל להוסיף לפרויקט שלך, כך שתוכל לעשות הרבה מהדברים המוצגים למעלה בזמן התכנון במקום בזמן הריצה.

אחד הדברים שמקל עליהם הרבה יותר הוא קידוד אירועים שהועלה על ידי התהליך, למשל האירוע בו התהליך יצא. אתה יכול גם להוסיף מטפל באמצעות קוד כזה:

לאפשר לתהליך להעלות אירועים
myProcess. EnableRaisingEvents = נכון
להוסיף מטפל באירועים שיצא
AddHandler myProcess. יצא, _
כתובת ממני. ProcessExited
תת פרטית ProcessExited (שולח ByVal כאובייקט, _
מערכת ByVal e As. אירוע אירועים)
'הקוד שלך כאן
סיום משנה

אבל פשוט קל יותר לבחור את האירוע עבור הרכיב.

instagram story viewer