שמתי לב שאני מאוד אוהבת להשוות דברים ... למשל כשאני פוגשת 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
3 comments:
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.
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
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]
Post a Comment