🍽️ בחר תרחיש במסעדה:
⏱️
קצב הדמיה והסברים:
פי 2.5 (איטי מאוד)
C# Code (Left-to-Right Layout)
1// --- אסינכרוני עם await ---
2async Task ServeCustomersAsync()
3{
4 Console.WriteLine("Taking Order...");
5
6 // המלצר מוסר את המשימה לשף וחוזר מיד ללקוחות!
7 await CookSteakAsync();
8
9 Console.WriteLine("Steak Delivered!");
10}
11
12async Task CookSteakAsync()
13{
14 // השף מבשל במטבח במקביל
15 await Task.Delay(3000);
16}
💡
האנלוגיה למציאות והסבר שלב-אחר-שלב:
🎉 ההדמיה הושלמה בהצלחה! כעת ברור יותר כיצד ה-await משאיר את המלצר פנוי ומדוע חסימה סינכרונית קופאת!
🛋️ 🍽️
שולחנות הלקוחות
מייצג את ממשק המשתמש (UI)
🏃♂️
המלצר
מייצג את ה-Main Thread
🍳 👨🍳
המטבח (השף)
מייצג את ה-Thread Pool
המלצר - חוט ראשי (Main Thread)
הוגש בהצלחה!
לקוחות 🛋️
מטבח 🍳
🏃♂️
📝 מוסר הזמנה לשף
השף במטבח - משימת רקע (Background Task)
פנוי
מתחיל לבשל 🔥
המנה מוכנה! 🍽️
👨🍳
המלצר משרת לקוחות / פנוי (UI זמין)
המלצר קפוא וממתין במטבח (UI תקוע!)
המלצר שוחרר לשרת שולחנות אחרים
השף במטבח מבשל ברקע (Task running)