PracticU

תרגילים על Threads

בלי כתוביותעם כתוביות
PracticU › קורס תכנות מתקדם - #Advanced .NET C › תרגילים על Threads
מילון מושגים:
תהליכון - יחידת ביצוע בתוך תהליך, המאפשרת להריץ כמה מהלכים במקביל ולחלוק את אותו זיכרון.
טופס - אזור בממשק שבו המשתמש מזין נתונים בשדות ושולח אותם, למשל טופס הרשמה או התחברות.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
כפתור - רכיב בממשק המשתמש שהמשתמש לוחץ עליו כדי להפעיל פעולה, כמו שליחת טופס או מעבר לדף אחר.
רכיב - יחידת בניין עצמאית וניתנת לשימוש חוזר בתוך מערכת או ממשק משתמש, שאחראית על חלק מוגדר מהתפקוד.
חריגה - מצב שגיאה שמתרחש בזמן ריצת התוכנית ומפסיק את המהלך הרגיל, אלא אם הקוד תופס ומטפל בו.
ממשק - נקודת מגע בין רכיבים: ממשק משתמש שבו אדם מפעיל תוכנה, או ממשק תכנותי שמגדיר אילו פעולות רכיב אחד חושף לאחר.

תרגילים על Threads
התרגילים האלה מתרגלים עבודה עם Threads בקונסול ובטפסי Windows Forms, כולל בעיות של סנכרון ושל גישה מ-thread אחר לרכיבי טופס.
התרגילים
1. שלושה threads: פונקציה שמדפיסה את השם שלכם 10 פעמים עם השהיה של שנייה, שנקראת מ-3 אובייקטי Thread. הריצו שוב כשהמאפיין IsBackground של כל אחד הוא true ובדקו מה ההבדל.
2. שליחת פרמטר: פונקציה PrintMessage שמקבלת object שהוא PrintingParams עם Message, TimesToPrint ו-Color. היא מדפיסה את ההודעה בצבע שנבחר, בהשהיה של 100 מילי-שניות, ו-thread נוסף קורא לה עם אובייקט אחר.
3. CoolPrinting: לולאה מ-1 עד 15 שיוצרת בכל סיבוב thread שמדפיס את המספר n, n פעמים, בצבע המתאים ל-n. בדקו אם מספרים מופיעים לפעמים בצבע לא נכון, ואם כן תקנו עם lock על ה-critical section הנכון.
4. אנימציה: Windows Forms עם תמונת שמש שנעה לאט מצד לצד ומשנה כיוון בקצוות. כפתור מתחיל ואחר כך כפתור שני עוצר. האנימציה צריכה לרוץ ב-thread נפרד ולא ברכיב Timer. הוסיפו תיבת טקסט כדי לבדוק שאפשר להקליד בזמן האנימציה, וטפלו ב-Cross-Thread Exception אם הוא מופיע.
5. מספרים ראשוניים: טופס עם שתי תיבות טקסט לטווח וכפתור. הוסיפו את הראשוניים ל-ListBox, בטווח גדול כמו מיליון עד שני מיליון. הכל ב-thread נפרד כדי שהטופס לא יתקע. הוסיפו כפתור שעוצר את החישוב מיד.
מתרגלים כאן הפעלת thread, העברת פרמטר ועדכון הממשק בלי לתקוע את הטופס.
השיעור הבא בקורס: Tasks - חלק 1

פרקי ההרצאה: תרגילים על Threads

  1. 00:00

    הרצת פונקציה בשלושה Threads

  2. 00:39

    מחלקת PrintingParams כפרמטר

  3. 01:15

    הדפסה עם Delay וצבע

  4. 01:53

    הפונקציה CoolPrinting בלולאה

תמלול ההרצאה: תרגילים על Threads

הטקסט המלא של הדקות הראשונות בהרצאה «תרגילים על Threads» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

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

  2. 00:20

    כל אובייקט מפעיל את הפונקציה הזאת פעם אחת. לאחר מכן, שנו את ה-Ease Background Property של כל אחד מה-Threadים האלה ל-True, והריצו שוב.

  3. 00:31

    תבדקו מה ההבדל בין שתי הארצות. עצרו טרד שקורא לפונקציה שנקראת PrintMessage ושולח אליה אובייקט מהמחלקה הבאה. המחלקה נקראת PrintingParams ויש לה שלושה DataMembers Message, TimesToPrint ו-Color מטיפוס ConsoleColor.

  4. 00:56

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

  5. 01:10

    בתוך הפונקציה מה שאתם צריכים לעשות זה פשוט להציג את המסג' מספר פעמים שמצוין ב-Times to Print ובצבע שמצוין ב-Color. כל הדפסה צריכה להיות מלווה ב-Delay של 100 מילי שניות.

  6. 01:28

    כלומר אם Times to Print הוא 10 אז סך כל הפונקציה תעבוד במשך שנייה אחת. צרו טרד נוסף שקורא לאותה הפונקציה אבל שולח אליה אובייקט אחר לגמרי מסוג Printing Params ובדקו שהכל עובד כמו שצריך.

  7. 01:45

    צרו לולאת 4 שרצה מ-1 עד 15 כולל 1 וכולל 15. בכל איטרציה של לולאה צרו טרד חדש שמפעיל פונקציה בעלת השם Cool Printing. Cool Printing אמורה לקבל מספר n ומה שהיא אמורה לעשות זה להדפיס את המספר N, N פעמים על המסך ובצבע שהקבוע שלו הוא N.

  8. 02:11

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

  9. 02:31

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

לקורס המלא: קורס תכנות מתקדם ב‑#C ודוט-נט

ההרצאה הקודמת: Threads - חלק 8

ההרצאה הבאה: Tasks - חלק 1

הרצאות קשורות מקורסים אחרים

  • Threads
  • תרגילים 1-3
  • תרגילים על מטריצות בג'אווה
  • תרגילים מסכמים בנושא עיצוב

קורסים נוספים במסלול

  • קורס WinForms - תוכנות רגילות בווינדוס
  • פרויקט מעשי ב-#C - בונים מחשבון פשוט
  • פרויקט מעשי ב-#C - ספר טלפונים
  • פרויקט מעשי ב-#C - תוכנת צייר
  • קורס ADO.NET - חיבור אתר למסד נתונים
  • קורס WCF - תקשורת למתקדמים בדוט-נט