none
עידכון של datagridview מ - thread אחר RRS feed

  • דיון כללי

  • שלום

    נתקלתי בבעיה שאני לא מצליחה למצוא לה פתרון ברשת.

    יש לי אפליקציה ב C# אשר בנויה מ datagridview

    יצרתי thread אשר עובר על כל השורות (יותר מ 3000) בלופ , ועושה הרבה עבודה הקשורה בכל מידע. ברגע שהסתימה העבודה על שורה מסוימת , הוא מעדכן עמודה מסוימת בסטטוס הצלחה או כשלון , וצובע אותה בהתאם.

    הבעיה היא שלאחר זמן מה התוכנית פשוט קופאת , ללא שום הודעת שגיאה. וזאת למרות שאני מעדכנת את ה GUI  בעזרת delegate ו- invoke

    אשמח אם משהו יוכל לתת לי כיוון לגבי חקירת הבעיה.

    תודה רבה.

    • שינה את הסוג Eran Sharvit יום רביעי 30 מאי 2012 16:27
    יום שלישי 22 מאי 2012 20:08

כל התגובות

  • אולי תשתפי אותנו בקודים של יצירת וחיסול התרד, וכן של העדכון.

    גם איזה סביבה (WIN MVC ASP ECT.)

    אצלי בד"כ קיפאון עם עבודה בתרדים מגיע כי אני לא מחסל את התרדים כלומר נותן להם NULL, וכפי הנראה הם שומרים את מקומם בזכרון

    עוד אם את עובדת בדוט נט 4 ממליץ לך לעבוד מיידית לTPL וTASK

    יום רביעי 23 מאי 2012 06:37
  • שלום,

    בהמשך לבקשתו של Bresleveloper, נשמח אם תוכלי להסביר קצת יותר על מה שאת מנסה לעשות - באיזו סביבה את עובדת (winforms, wpf, אני מניח שזה דסקטופ לפי השימוש ב-invoke), מה קורה כשעובדים עם פחות רשומות, והאם ניסית לעצור בדיבאג בזמן שהמערכת קופאת בשביל לראות איזה thread תקוע.

    תודה,

    הנהלת הפורומים.


    Please mark posts as answers/helpful if it answers your question.
    Senior Consultant on WCF, ASP.NET, Siverlight, and Entity Framework. Author of Microsoft's Official WCF 4 Course. Co-author of the Microsoft HPC/Azure burst whitepaper.
    Visit my blog: http://blogs.microsoft.co.il/blogs/idof

    יום שני 28 מאי 2012 10:45
    מנחה דיון
  • שלום דנה

    נשמח עם תעדכני אותנו בסטטוס של השאלה.

    האם התגברת על הבעיה? אם כן נשמח אם תפרטי מה היתה הבעיה ומה עשית לטובת אנשים שנתקלים בבעיות דומות.

    אם לא, בבקשה הגיבי לתגובות שקבלת על מנת שיוכלו להמשיך ולעזור לך.

    יום טוב


    בהצלחה, ואם עזרתי, לחץ על 'סמן כתשובה', וסמן את התשובה כמועילה.

    יום רביעי 30 מאי 2012 06:08
  • שלום לכלם

    לאחר מסע יסורים גיליתי את הסיבה לכך שהאפליקציה קופאת אחרי זמן מה.

    הסיבה לא קשורה לעדכון ה GUI דרך thread שכן השתמשמתי נכון בפןנקצית ה invoke

    הסיבה היתה שבתוך אותו thread אני קוראת מספר פעמים ל native DLL

    הקריאה הקפיצה exception שלא הפריע לתוכנית להמשיך לרוץ אך כנראה אגר אותם עד למצב שהמערכת קרסה.

    הבעיה בקריאה ל DLL היתה בהגדרה לא נכונה של coding convention

    תודה לכל מי שהגיב. אם ישנן שאלות , אשמח לענות

    יום טוב :)

    יום חמישי 31 מאי 2012 06:00
  • אם כן עכשיו אני יודע שאת משתמשת בWINFORM שמשום מה MS הגאונים החליטו שמקום להקריס את התכנית הוא יתעלם מהשגיאות (עד כאן יופי אבל) ולא יודיע אפי על קיומן

    אני מאוד ממליץ לעשות TRY CATCH על כל פונ ופונ באפליקציית WINFORM כי את לעולם לא יודעת מה עבד ומה לא, הוא פשוט מדלג הלאה

    נ.ב. כל THREAD שאת קוראת לו ולא שמה בסופו של דבר NULL הוא ממשיך לתפוס את הזכרון שלו ובד"כ אחרי 60-80 כאלה מתחילים להרגיש איטיות

    לשרותך

    יום חמישי 31 מאי 2012 08:02
  • היי

    האם אתה מתכוון שעבור כל thread שנפתח יש לסיים ב null?

    אצלי יש רק אחד (חוץ מהראשי) אך הוא מפעיל לולאה שעושה הרבה מאד עבודה.

    יום שני 04 יוני 2012 04:33
  • כן 

    ואת צריכה לעשות לו בתוכו איזהשהם TRY-CATCH כדי לתפוס את גורם הקריסה, ואפילו בתוך הלולאה כי אחרת הוא סתם נהיה ABORT ואת לא יודעת

    ואז בדיבוג את שמה BREAKPOINTS או שתעשי לוגרים

    יום שלישי 05 יוני 2012 10:42