
AddAsync שמחזירה void, ואירוע AddCompleted.e.Result.userState. בשיעור נוצרה מחלקה NumbersInfo עם שני המספרים, והאירוע מחלץ אותם בעזרת e.UserState as NumbersInfo.הטקסט המלא של הדקות הראשונות בהרצאה «Asynchronous - xxxAsync Function» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
כעת אנחנו הולכים לראות איך לבצע את אותו הדבר שביצענו מקודם כלומר קריאה ל-WCF סרוויס שלנו בטרד נפרד אבל בלי לפתוח טרד בעצמנו ובלי לנהל אותו מבחינת הטופס אלא על ידי פונקציות build-in שיכולות להיות קיימות בתוך הסרוויס שלנו אז קודם כל מה שנעשה זה ניפטר מכל הקוד שעשינו מקודם
אין לנו פה את הפונקציה הזאת, בואו נסגור אותה אין לנו פה את ה-invoke, את כל הקוד הזה נכניס בתוך הלחצן, ניפטר מה-delegate שבנינו ובואו נסתכל מה הקוד שיש לנו.
ראשית אנחנו לוקחים את שני המשתנים מתיבות הטקסט לתוך משתנים לוקאליים. לאחר מכן אנחנו פותחים את הסרוויס, קוראים לפונקציה שאנחנו דימינו כאילו שהיא לוקחת הרבה זמן, לוקחים את התשובה ומציגים אותה בלייבל.
בואו נציג אותה בלייבל lbl.result.txt ואז סוגרים את הסרוויס. אוקיי, אז אם אני מסתכל על הסרוויס כרגע אני רואה שאני קראתי בעצמי לפונקציית add וזה הדבר שלוקח הרבה זמן ואם אני קורא לפונקציית add לא משנה מה יקרה זה פשוט דבר שלוקח הרבה זמן כי היא מחזירה לי ערך ואני צריך לחכות עד שהיא תסתיים ואני צריך לקבל את הערך המוחזר לכן אני לא יכול
לקרוא לה בעצמי אבל בתוך הסרוויס אם אני אחקור אותו אני אראה שאין לי פה שום פונקציה אחרת שמאפשרת לי לבצע איזושהי קריאה על ידי טרד או קריאות אסינכרוניות כדי שאני אוכל לקרוא לפונקציה add או לכל פונקציה אחרת בעזרת קריאות אסינכרוניות, אני צריך לחזור להגדרה של ה-service שלנו ולבצע
configuration שלו. כלומר, כאילו שאני הבאתי עכשיו בפעם הראשונה את ה-service והגעתי לטופס של ה-advanced features. ובטופס הזה אני רואה שיש לי כאן checkbox לגבי generate asynchronous operations.
אז בואו נגדיר את ה-generate asynchronous operations הזה. מבצע אוקיי וכעת המערכת כן מייצרת לי בתוך אותו הפרוקסי בתוך הסרוויס הזה פונקציות נוספות אני פתאום רואה שיש לי הרבה יותר פונקציות ממקודם אז בואו נסתכל רגע על הפונקציית add פונקציית add זאת הפונקציה הסטנדרטית שאם אני קורא לה קריאה היא לא מתבצעת בצורה אסינכרונית אלא בצורה סינכרונית ואני
נאלץ לחכות לה אבל פתאום אני רואה שיש לי פה עוד פונקציה שנקראת add כלומר אותו השם שאנחנו הגדרנו לפונקציה שלנו אבל עם הסיומת async זאת פונקציה שפשוט מקבלת את אותו הדבר ואני יכול לקרוא לה והפונקציה הזאת היא מתבצעת בצורה אסינכרונית אבל היא לא מחזירה לי שום דבר אני רואה שהיא מחזירה void ואני לא אקבל כרגע את
ה-result לפונקציה הזאת אבל איך אני באמת מקבל את התשובה בחזרה? אז מה שאני צריך לעשות, אני צריך להירשם לאירוע