תוכן עניינים:
הגדרה - מה המשמעות של דיספה?
בהקשר של C #, dispose היא שיטת אובייקט המופעלת לביצוע קוד הנדרש לניקוי זיכרון ושחרור ואיפוס משאבים לא מנוהלים, כגון ידיות קבצים וחיבורי מסד נתונים. השלך משפר את הביצועים ומייעל את הזיכרון על ידי שחרור אובייקטים בלתי נשלטים ומשאבים נדירים, כמו ידיות ממשק גרפיקה (GDI) המשמשות ביישומים עם שטח מוגבל של Windows.
שיטת ה- Dispose, המסופקת על ידי הממשק IDisposable, מיישמת שיחות למחוק. תבנית הניתוק מיועדת לניקוי בזמן וצפוי מראש, מניעת דליפות זיכרון זמניות ופינוי משאבים.
Techopedia מסביר על Dispose
המסגרת .NET מאפשרת איסוף זבל (GC), מנהלת זיכרון ומשאבים של אובייקטים ומחזירה הפניות לזיכרון אובייקטים לא חוקיים על ידי קריאה ל- Finalize - שיטה לא-דטרמיניסטית. שיטת ה- Dispose שולטת על אורך החיים של מופעי זיכרון אובייקטים ומספקת בקרת ניקוי זיכרון מפורשת לעומת ניקוי הזיכרון המרומז של Finalize. ניתן להפעיל את הסילוק גם כאשר מופיעים מקרים אחרים של אובייקט זיכרון, ואילו סופי עשוי להיעשות רק לאחר השמדת אובייקט הזיכרון האחרון.
כללי שיטת הסילוק הם כדלקמן:
- משמש למשאבים לא מנוהלים הדורשים שחרור מיידי לאחר השימוש.
- אם לא נקרא Dispose, יש ליישם את שיטת ה- Finalize.
- לאחר התקשרות לשיטת Dispose, יש לקרוא לשיטת GC.SuppressFinalize כדי למנוע את שיטת ה- Finalize ולהימנע מ- GC מיותר.
- יש לטפל בזהירות בחריגים אם מופעלת שיטת Dispose לא פעם. אם מקפידים על משאבים, כל שיטת מופע עשויה לזרוק את ObjectDisposedException.
- לא ניתן לעשות שימוש חוזר באובייקט בשיטה שנקראה בעבר.
- מומלץ להיפטר רק לניהול אובייקטים מקוריים של משאבים ואובייקטים של Component Object Model (COM) שנחשפים למסגרת .NET Framework.
- יתכן שלא יועברו לפסולת במקביל משלל האשכולות, בגלל תוצאות בלתי צפויות.
- אסור ליצור סוגי ערכים כסוגים חד פעמיים או עם חברי משאבים שאינם מנוהלים.
- בעת שימוש במשאבים לא מנוהלים, זה נחשב לשיטות העבודה המומלצות להחיל את הצהרת השימוש של קוד המקור, אשר קוראת אוטומטית לשיטת השלילה של האובייקט לאחר השלמת קוד האובייקט.






