Rasie events in static constractor ?

27 במרץ 2009

תגיות: , ,
5 תגובות

 


האם יש משמעות להרים events בתוך static cror ?

 

התשובה היא, לא!

 

מכיון שאין שוב מצב שמישהו יקבל את ההודעה שהאירוע התרחש,

 

בגלל ההנחות הבאות:

 

1. מתוך static ctor, אפשר לגשת אך ורק ל static events.

 

2. ה static ctor, יתרחש תמיד שנייה לפני השימוש הראשון ב static של ה class

 

3. ניסיון של רישום ל static events, יגרום להפעלת ה static ctor.

 

4. הרישום לאירוע, לא יקלט לפני סיום ה ctor.

 

ולכן אף פעם לא נוכל להרים אירוע מתוך ה static ctor.

 

 

הפיתרון היחיד שמצאתי היה, שמיד אחרי הרישום לאירוע הפעלתי בעצמי את המתודה, לדוגמא:

 



StaticClass.StaticEvent += StaticClass_StaticEvent;


StaticClass_StaticEvent(null, null);


 

אם למישהו יש רעיון יותר טוב, אשמח לשמוע על זה.

הוסף תגובה
facebook linkedin twitter email

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *

5 תגובות

  1. אריאל בן חורש29 במרץ 2009 ב 14:33

    רעיון למה?
    לא אמרת מה אתה צריך?

    הגב
  2. Alon1 באפריל 2009 ב 3:27

    באופן עקרוני גם הרמת Event או בכלל קריאה למתודה מתוך Ctor רגיל היא בעייתית וזאת מכיוון שהאובייקט עדיין לא סיים להיבנות.
    למה אתה צריך להרים Event מתוך ה Static Ctor? או שזה רק דיון עקרוני שאפשר לעשות זאת אבל אין למי.

    הגב
  3. Shlomo1 באפריל 2009 ב 10:08

    יש לי class שמכיל מערך סטטי של שמות, בצד ה GUI יש לי combo שמכיל את הערכים של המערך,
    אני רוצה להירשם ל event שיודיע לי, בכל פעם שהמערך משתנה.
    אני מאתחל את המערך כמובן ב ctor הסטטי,

    הבעייה שלי, שאני לא מקבל נוטיפיקציה לאירוע, בגלל שאני ב ctor הסטטי.

    הגב
  4. Rotem Bloom1 באפריל 2009 ב 11:42

    אתה לא יכול לקרוא לאיזה פונקציית INIT ב-CLASS שלך שהיא תעשה את ההרשמה ל-EVENT?

    הגב
  5. Shlomo1 באפריל 2009 ב 12:42

    אני יכול, רק שאני מעדיף שלא.
    אבל כנראה שאין דרך אחרת

    הגב