This is a mirror of official site: http://jasper-net.blogspot.com/

Ways to work on the main thread 1

| Sunday, May 9, 2010
שמתי לב שאני מאוד אוהבת להשוות דברים ... למשל כשאני פוגשת 2 פתרונות דומים לאותה בעיה - עניין היעילות ואופן השימוש בכל אחד מהם, מה החסרונות בכל מקרה מעניינים אותי מאוד. 
הפעם נלך על Invoke on Main Thread הכוונה שלי לדבר בעצם על עבודה עם UI וכוון ש UI בדרך כלל נוצר ב Main thread אז עליו נתמקד. אני מכירה כמה פתרונות ונדון עליהם כאן: 

הפתרון היותר מוכר : 

if (InvokeRequired) 
         Invoke(new MethodInvoker(MethodName)); 
else 
         MethodName(); 
מה שקורה כאן זה בעצם שאלה : האם מה שרוצים להפעיל שקשור ב UI מופעל מה Thread שבו נוצר ה UI ?
אם לא מאותו אחד – אז משתמשים ב MethodInvoker שהוא delegate מובנה שמצביע לפונקציה void ללא פרמטרים.
שאלתם את עצמיכם איך זה עובד מפה ? חוץ מזה שניתן לקרוא כי Invoke מחפש את ה handler של form במעלה היררכיית ה controls עד שמוצא אחד ( ואם לא מוצא מחזיר false) 
הרישום נרשם בתור לMessage Loop ומבוצע בפועל כאשר מגיעה זמנו. 
מה שחשוב להוסיף הוא בעצם שכל המטרה כאן היא למנוע ( בדרך כלל ) קריסה של המערכת... למה אתם שואלים ? אז ככה... כשעובדים עם UI בעצם בסופו של דבר ה System.Windows.Forms ניגש לפונקציות מתוך Win32 API – זה דיי ברור. העניין הוא שAPI זה נכתב בסביבה (Apatrment) שיועדה לעבוד עם Thread אחד ויחיד. מה שאנחנו מנסים למנוע הוא לעבוד בסביבה זו ב multy threading . 
לכן אנחנו חייבים להגביל את הגישה ל UI באופן זה. 


Read more: GalinaK

Posted via email from jasper22's posterous

3 comments:

Anonymous said...

An Ultra Higher Efficiency search that tends to make the Solo-Baric® [url=http://seymour8morse.sosblog.com/The-first-blog-b1/KICKER-Item-Criteria-b1-p5.htm]L7[/url] genuinely a statement item. The cone offers you deeper and stronger bass at greater listening levels with less distortion due to a smaller amount tendency to flex. Simply because, when a woofer cone flexes, there is a reduction of output. This decline of output translates into much less bass.

Anonymous said...

Hi,

I have a question for the webmaster/admin here at www.blogger.com.

Can I use some of the information from this blog post right above if I give a link back to this website?

Thanks,
Alex

Anonymous said...

Salut à tous,

Voulez-vous gagner des prix pour pas cher ?

Le site Bidou.ca est un un site web amusant qui vous permet de gagner de super objets sans investir enormement!

Venez participer sur: [url=http://bidoubidou.ca/]bidou.ca[/url]