
BeginAdd. היא מקבלת את הפרמטרים, פונקציית callback ואובייקט מצב (state). הטיפוס של ה-callback הוא AsyncCallback.IAsyncResult. מתוכה קוראים ל-EndAdd עם אותו אובייקט, והיא מחזירה את התשובה בטיפוס המקורי של הפונקציה.AsyncState. בשיעור הוא שימש לשמירת שני המספרים של הקריאה.הטקסט המלא של הדקות הראשונות בהרצאה «Asynchronous - Beginxxx» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
כעת אנחנו הולכים לראות שיטה שלישית לבצע קריאות אסינכרוניות ל-WCF סרוויס שלנו. אז בואו נסתכל על הקוד של הווינפורם ונראה שמה שעשינו זה פשוט נרשמנו לאירוע שנקרא add completed כאשר add זה השם של הפונקציה שבנינו ואז קראנו לפונקציה על ידי add async כלומר לא קראנו לפונקציה add אלא קראנו לפונקציה add async שמפעילה את
השירות שלנו בצורה אסינכרונית. כאשר מתקבלת תשובה מהשרת, האירוע הזה מועלה ואנחנו לקחנו את התשובה מהאירוע והצגנו אותה. בואו נראה שיטה נוספת.
אז ניפטר כרגע משתי הקריאות האלה, מהרישום לאירוע ומהקריאה ל-add async, ניפטר מהם. נשים את זה בהערה כי עוד מעט נשתמש עם הקוד הזה.
ומה שאנחנו הולכים לעשות, אנחנו הולכים לגשת לסרוויס שלנו ולקרוא לפונקציה שמתחילה בשם בגין ומיד אחר כך יש את השם של הפונקציה. כלומר אם אנחנו קראנו לפונקציה שלנו add אז יש לנו פונקציה שנקראת בגין add שימו לב שכל פונקציה שבנינו יש פונקציה נוספת שמתחילה במילה בגין ועכשיו אנחנו שולחים את המשתנים שימו לב שהפונקציה הזאת מקבלת בדיוק את
אותם משתנים של הפונקציה add אז אנחנו שולחים את num1 ואת num2 לאחר מכן היא מקבלת delegate שמצביע לפונקציה שהמערכת הולכת לקרוא לה כאשר תתקבל תשובה מהשר"ט זאת אומרת שהדלגייט הזה הוא איפשהו מחליף את האירוע שהיה מקודם.
אז אם אני מסתכל אני רואה שהדלגייט הוא מטיפוס אסינק קולבאק. אז בואו נבנה אובייקט מטיפוס אסינק קולבאק ונמציא פונקציה שנקראת completed.
לאחר מכן הוא מקבל איזשהו אסינק סטייט שזה דומה ל-user state ששלחנו. זאת אומרת מידע נוסף שאנחנו רוצים להעביר לפונקציה completed כאשר תתבצע תשובה מהשראת. ואנחנו רוצים להעביר את num.info כי num.info מחזיק לנו פרמטרים שקשורים לקריאה הנוכחית.
אז בואו נבנה את הפונקציה completed. יש לנו פה private void completed והפונקציה הזאת צריכה לקבל אובייקט מטיפוס שימו לב איך הוא נקרא אם אנחנו פותחים פה סוגריים הטיפוס שלה ו-i async result אנחנו יכולים לראות כאן שהיא מחזירה void והיא מקבלת i async result תכף אנחנו נראה מה אנחנו עושים איתו async זאת אומרת שהפונקציה הזאת completed הולכת להתבצע כאשר המידע
מוחזר מהשרת כאשר יש תשובה אז מה אנחנו הולכים לעשות אנחנו רוצים ללכת ללייבל שלנו lblresult.txt ולהכניס אליה את המידע שהתקבל אוקיי בואו נחלק את המידע ולחלקים אז יש לנו ראשית את הריזולט שהתקבל לפונקציה בריזולט שהתקבל לפונקציה אנחנו רואים שיש לנו את האסינק סטייט שנשלח האסינק סטייט זה
אובייקט, אנחנו רוצים להחליף אותו לאובייקט האמיתי שנשלח