Process App Domain and Thread Process Thread Priority

  • Slides: 25
Download presentation

Process, App Domain and Thread Process Thread Priority App. Domain Exception Handling Thread Paramterised

Process, App Domain and Thread Process Thread Priority App. Domain Exception Handling Thread Paramterised Threads Foreground and Background Threads

Process - ישנן כמה מחלקות אשר מאפשרות לחקור את ה System. Diagnostics § במרחב

Process - ישנן כמה מחלקות אשר מאפשרות לחקור את ה System. Diagnostics § במרחב השמות : שרצים במערכת Processes. Process המחלקה : § לדוגמה List<My. Process> process. List = new List<My. Process>(); … private void Read. Process() { Process[] process_arr = Process. Get. Processes(); My. Process my_process; foreach (var p in process_arr) { my_process = new My. Process(); my_process. PID = p. Id; my_process. Process. Name = p. Process. Name; my_process. Thread. Count = p. Threads. Count; process. List. Add(my_process); } } Process. Investigating : דוגמת קוד

Threads static void Worker. Method 1() { int counter = 0; מתודת העבודה של

Threads static void Worker. Method 1() { int counter = 0; מתודת העבודה של התהליך for (uint i = 0; i < 1000; i++) { Console. Foreground. Color = Console. Color. Red; counter++; Console. Write. Line("Worker. Method 1 : counter : " + counter); } המכיל את Delegate } מתודת העבודה של התהליך Thread. Start ts 1 = new Thread. Start(Worker. Method 1); Thread t 1 = new Thread(ts 1); - הפעלת ה t 1. Start(); Thread - הגדרת ה Thread First. Thread. Sample : דוגמת קוד

Threads } static void Worker. Method 1() { int counter = 0; for (uint

Threads } static void Worker. Method 1() { int counter = 0; for (uint i = 0; i < 1000; i++) { Console. Foreground. Color = Console. Color. Red; counter++; Console. Write. Line("Worker. Method 1 : counter : " + counter); } Thread t 1 = new Thread(Worker. Method 1); t 1. Start(); אפשרות נוספת להגדרת תהליך First. Thread. Sample : דוגמת קוד

Threads Lifecycle http: //www. informit. com/articles/article. aspx? p=31093&seq. Num=2 §

Threads Lifecycle http: //www. informit. com/articles/article. aspx? p=31093&seq. Num=2 §

Paramterised Threads Data - מחלקת ה public class Parameter { ? ומה עם רוצים

Paramterised Threads Data - מחלקת ה public class Parameter { ? ומה עם רוצים פרמטרים public int Num { get; set; } public Console. Color { get; set; } ? יבצע מספר שונה של איטרציות לדוגמה Thread עם רוצים שכל } static void Worker. Method(object data) : Parameterized. Thread. Start בשביל זה יש את { Parameter parameter = data as Parameter; for (int i = 0; i < parameter. Num; i++) הפעם עם Worker Method { פרמטר Console. Foreground. Color = parameter. Color; Console. Write. Line("Worker. Method : counter : " + i); יצירת התהליך והרצתו עם } פרמטר } Parameter param 1 = new Parameter { Num = 100, Color = Console. Color. Red }; Parameterized. Thread. Start pts 1 = new Parameterized. Thread. Start(Worker. Method); Thread thread 1 = new Thread(pts 1); thread 1. Start(param 1); Parameterized. Thread. Start. Sample : דוגמת קוד

Foreground and Background Threads : § תהליך יכול לפעול בשני מצבים התוכנית נשארת בחיים

Foreground and Background Threads : § תהליך יכול לפעול בשני מצבים התוכנית נשארת בחיים כל עוד התהליכים , – ברירת המחדל Foreground Thread §. רצים class Program { static void Worker. Method(). סיום התוכנית הורד את התהליך { for (int i = 0; i < 10; i++) { Console. Write. Line("Worker. Method : counter : " + i); } Console. Write. Line("End Of Worker. Method"); } static void Main(string[] args) { Thread. Start ts = new Thread. Start(Worker. Method); Thread t = new Thread(ts); t. Start(); Console. Write. Line("End Of Main"); } } Foreground Thread – Background Thread § : דוגמת קוד

Foreground and Background Threads static void Main(string[] args) { Thread. Start ts = new

Foreground and Background Threads static void Main(string[] args) { Thread. Start ts = new Thread. Start(Worker. Method); Thread t = new Thread(ts); t. Is. Background = true; t. Start(); Console. Write. Line("End Of Main"); } Background Thread

Exception Handling. לא רלבנטי אם מתרחשת חריגה בתוך תהליך TryCatch § בלוק . §

Exception Handling. לא רלבנטי אם מתרחשת חריגה בתוך תהליך TryCatch § בלוק . § זה אפילו מתבקש בשל העובדה שלתהליך יש נתיב ביצוע עצמאי static void Worker. Method() { int divider = 0; int num = 10 / divider; } static void Main(string[] args) { try { Thread. Start ts = new Thread. Start(Worker. Method); Thread t = new Thread(ts); t. Start(); } catch(Exception e) { Console. Write. Line(e. Message); } } Thread. Exception : דוגמת קוד

Exception Handling § חריגה בתהליך תגרום לנפילת כל היישום ולכן לא ניתן להתעלם מחריגות

Exception Handling § חריגה בתהליך תגרום לנפילת כל היישום ולכן לא ניתן להתעלם מחריגות פנימיות . בתהליכים : § הפיתרון הוא לטפל בהם בשתי רמות . בתוך מתודת העבודה עצמה TryCatch בלוק. 1 האירוע – האירוע מופעל בכל פעם App. Domain. Current. Domain. Unhandled. Exception האירוע. 2 אלא רק ביצוע פעולות אחרונות , אין ביכולתו למנוע את הקריסה , שיש חריגה לא מטופלת . הודעה למשתמש( לפני הקריסה עצמה , )כמו שמירה )עליה נדבר Application. Dispatcher. Unhandled. Exception יש אפשרות נוספת WPF - ב. 3 ( בהמשך App. Domain. Current. Domain. Unhandled. Exception += Current. Domain_Unhandled. Exception; static void Current. Domain_Unhandled. Exception(object sender, Unhandled. Exception. Event. Args e) { הטיפול Exception exception = e. Exception. Object as Exception; באירוע Console. Write. Line(exception. Message); } Thread. Exception : דוגמת קוד