ABA


"C# למה עבודה עם ProgressBar כל כך מסורבלת?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #10808 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 10808
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   09:09   15.08.12   
אל הפורום  
  C# למה עבודה עם ProgressBar כל כך מסורבלת?  
 
   יש לי תוכנית קטנה שבניתי במסגרת העבודה.
עם הזמן התכנים גדלו והתוכנית עובדת משך זמן רב.
דרוש ProgrssBar כדי להעריך את זמן העבודה של התוכנית.

באופן עקרוני כשה ProgressBar הוא אובייקט באותה מחלקה בה אתה מבצע את הקוד אין שום בעיה להגדיל ולהקטין אותו.
הבעיה היא כשאתה יוצר אובייקט ממחלקה אחרת אין לך אפשרות לגשת אל ה ProgrssBar כי הוא כאילו "תקוע".

מחיפוש באינטרנט ראיתי שיש לפתוח Thread נוסף, ועבודה עם BackgrounWorker וכו'.

לפני שאני שואל מה הדברים האלה. יותר נדרש לשאול למה הנושא הזה כל כך מסורבל? זה בסה"כ ProgrssBar. מה הסיבה שאני לא יכול לגשת אליו? לא ניתן לשנות אלמנטים גרפים בזמן שתוכנית אחר עובדת?
כיום מחשבים יודעים לבצע פעולות במקביל לא? (ריבוי מעבדים)
או אפילו אם לא, אז פתיחת Thread נוסף עדין לא עוזרת. ראיתי מיליון ואחת דרכים איך להגדיל את ה progrssbar וזה פשוט עולם ומלואו. כל אחד אומר שעדיף ככה וככה וכו'.

הדבר הראשון שניסיתי אינטואטיבית הוא בעצם להעביר ל constructor רפרנס לאובייקט של ה progrssbar ובעצם לגשת אליו מתוך האובייקט "החיצוני".
אבל זה עדין לא שינה כלום.

למה זה ככה?
סליחה על החפירה אבל זה ישב לי על הלב הרבה זמן ולא יצא לי לשאול.


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  כל נושא ה-UI בכל שפה הוא דבר שיכול להיחשב רגיש Nesher  16.08.12 07:10 1
  תשובה EHD 18.08.12 14:18 2
  תודה לכם, אבדוק את הנושא. dvir8 19.08.12 14:32 3

       
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק
   07:10   16.08.12   
אל הפורום  
  1. כל נושא ה-UI בכל שפה הוא דבר שיכול להיחשב רגיש  
בתגובה להודעה מספר 0
 
אתה מנסה לשנות תצוגה מאובייקט חיצוני למסך שבו הוא קיים
אם תיקח דוגמא הרבה פעמים שתעשה פעולה ארוכה במסך אז הוא ייתקע לכמה שניות עד שהוא ישתחרר, אם תעשה את זה מ-Thread אחר זה לא יפריע להמשך עבודה סדירה באפליקציה

אתה חושב שזה פשוט אבל ברקע זה קצת יותר מסובך בגלל זה יש לך אופציות שונות לתת פתרון לזה כמו Thread חדש או BackgroundWorker


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
EHD
חבר מתאריך 13.8.03
87 הודעות
   14:18   18.08.12   
אל הפורום  
  2. תשובה  
בתגובה להודעה מספר 0
 
   הבעיה היא לא המחלקה הניגשת לUI אלא הTHREAD הניגש.
רק הthread של הui יכול לגעת בפקדים על המסך. לכן קיים הdispacher שמקבל delegate לפונקציה ומריץ אותה בשבילך בthread של הui.
background worker זאת מחלקה שימושית מאוד שעושה בשבילך את כל עבודת ניהול הthreadים ובנוסף מספקת ממשק יעודי לעבודה עם Progress bar של דיווח ההתקדמות.

בהצלחה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   14:32   19.08.12   
אל הפורום  
  3. תודה לכם, אבדוק את הנושא.  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net