לדלג לתוכן

תרגול שורשים שמונעים פריקה

שנו את Host כך שישמור delegate שנוצר מן המתודה Run בתוך שדה סטטי. דרשו שתי בדיקות: אחרי Unload כל עוד ה־delegate נשמר, ואחרי ניקוי השדה והיציאה מן הפונקציה שהחזיקה אותו. אל תנסו לקרוא plugin אחרי שביקשתם להתחיל את תהליך הסגירה שלו.

צרו Contract.dll עם ממשק IPlugin ובנו plugin שמממש אותו. טענו תחילה עותק פרטי של החוזה ושחזרו כשל cast. תקנו את Load כך שיחזיר את assembly של החוזה שכבר נטען ב־host, ובדקו גם שם וגרסה צפויים לפני ההחזרה.

הגישו תרשים של dependencies ושל roots, וכתבו מדוע תוצאה של unloaded=False לבדה אינה אומרת אם נשאר delegate, thread פעיל או local זמני של ה־JIT.