כותב |
|
אלעד משתמש חבר
הצטרף / הצטרפה: 21 March 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 166
|
נשלח בתאריך: 17 August 2007 בשעה 21:13 | | IP רשוּם
|
|
|
|
יש לי ערך INT ב Form1_Load שאני מאוד רוצה לקרוא את הערך שלו כשאני לוחץ על כפתור, אך בגלל ש Form1_Load הוא פונקציה אני לא מצליח לעשות את זה.
למישהו יש רעיון איך עוקפים את זה?
__________________ כן?
לא?
שחור לבן.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 17 August 2007 בשעה 21:40 | | IP רשוּם
|
|
|
|
לא הבנתי...
כאילו הכרזת על המספר ב-form_load ?
פשוט תעשה אותו משתנה של המחלקה של הטופס...מה זה השאלות האלה היום ?
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
אלעד משתמש חבר
הצטרף / הצטרפה: 21 March 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 166
|
נשלח בתאריך: 18 August 2007 בשעה 00:46 | | IP רשוּם
|
|
|
|
מסתבר שזה בעיה אחרת לגמרי ממה שאשלתי, הבעיה שלי היא לשנות label בטופס מתוך THRED אחר.
הסבר של כול הבעיה: אני עושה תוכנה שצריכה לספור לאחור 15 שניות ואז מציגה הודעה, אני עשיתי TIMER שרץ על THRED אחר אבל משום מה אי אפשר לשנות את הערכים של הlabel (כדי שהוא יראה כמה זמן נשאר לך) מתוך ה THERD החדש, יש לך רעיונות?
__________________ כן?
לא?
שחור לבן.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 18 August 2007 בשעה 00:58 | | IP רשוּם
|
|
|
|
בטעינה של הטופס
control.checkforillegalcrossthreadcalls = false
או לחלופין, אינווקציה מ-thread אחר עובדת כך:
נראה לי שאתה יוצר delegate ב-thread של ה-UI וקורא אצלו ל-invoke...
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
אלעד משתמש חבר
הצטרף / הצטרפה: 21 March 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 166
|
נשלח בתאריך: 18 August 2007 בשעה 10:16 | | IP רשוּם
|
|
|
|
הראשון לא עובד
השני נראה לי שצריך לעבוד, אבל כשאני מנסה לעשות את זה אני מסתבך בעצמי.
בגדול זה מה שאני מנסה:
אני מנסה לעשות ב FORM1 מונה של 10 שניות, עשיתי איזה LABEL2 (השמות ישתנו בהמשך ) ובנתי לי MYTIMER שמתקתק לו כול שניה. הבעיה היא שאירוע התיקתוק חייב להיות בTHRED חדש כדי שהמונה יפעל בזמן השתוכנית רצה (אחרת התוכנית קופאת עד שהוא מסיים לתקתק לו), אז יצרתי לי THRED ומסתבר שאי אפשר לשנות את הCOTROLיים בFORM1 בגלל תור UI (אם הבנתי מגוגל נכון). עכשיו אני שובר את הראש איך לגרום ל public void myTimer_Tick(object sender, EventArgs e) להכניס את time_show (הזמן העכשיווי) לתוך label2 ?
__________________ כן?
לא?
שחור לבן.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 18 August 2007 בשעה 15:21 | | IP רשוּם
|
|
|
|
תגדיר "הראשון לא עובד", עשית copy & paste, כי צריך להפוך חלק מהאותיות לגדולות...
ולמה אתה חוזר על השאלה? הבנתי והצעתי את שני הפתרונות האפשריים...
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
אלעד משתמש חבר
הצטרף / הצטרפה: 21 March 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 166
|
נשלח בתאריך: 18 August 2007 בשעה 17:14 | | IP רשוּם
|
|
|
|
השתמשתי ב control.checkforillegalcrossthreadcalls = false (בדקתי שכתבתי אותו נכון) ב FORM_LOAD
__________________ כן?
לא?
שחור לבן.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 18 August 2007 בשעה 18:08 | | IP רשוּם
|
|
|
|
לא צריך להקליד, לוחצים על ctrl+space ונותנים לסביבת עבודה להשלים אותך...
ואז מה קרה ?
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
אלעד משתמש חבר
הצטרף / הצטרפה: 21 March 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 166
|
נשלח בתאריך: 18 August 2007 בשעה 19:13 | | IP רשוּם
|
|
|
|
זה לא עבד.
בסוף השתמשתי ב background worker .
__________________ כן?
לא?
שחור לבן.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 18 August 2007 בשעה 19:17 | | IP רשוּם
|
|
|
|
שזאת, בעקיפין, השיטה עם ה-delegate, אם היית צריך יותר פתילי ריצה (threads) לא זה היה ריאליסטי...
בכל מקרה, לא עבד כאילו לא מנע את השגיאה או לא עבר הידור ?
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
אלעד משתמש חבר
הצטרף / הצטרפה: 21 March 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 166
|
נשלח בתאריך: 18 August 2007 בשעה 21:41 | | IP רשוּם
|
|
|
|
הכול רץ, פשוט הTHRED החדש לא שינה את הערך בטופס
__________________ כן?
לא?
שחור לבן.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 18 August 2007 בשעה 21:51 | | IP רשוּם
|
|
|
|
הממ...אוקיי, מעניין לשמוע... אף פעם לא ראיתי שהשיטה הזאת לא עובדת...
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
אלעד משתמש חבר
הצטרף / הצטרפה: 21 March 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 166
|
נשלח בתאריך: 19 August 2007 בשעה 13:31 | | IP רשוּם
|
|
|
|
האמת אחרי עוד קצת משחק עם זה אני רואה שה background worker עובד רק עם ה control.checkforillegalcrossthreadcalls = false .
אבל משום מה התוכנית נתקעת אחרי 2 קראיות אליו.
נראה לי שיש פה תנגשות בין הTHREDיים, worker.Dispose() לא אמור לסגור את הWORKER ?
כשנסיתי לעשות לו worker.CancelAsync() הוא אמר לי שהוא לא תומך בזה.
__________________ כן?
לא?
שחור לבן.
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 19 August 2007 בשעה 14:44 | | IP רשוּם
|
|
|
|
אתה מבלבל הרבה דברים...
אם אתה רוצה לשנות UI מ-background worker תקרא למתודה updateProgress ומה- event של progressChanged תעדכן את ה-UI, ככה זה יהיה השיטה שתיארתי.
Dispose לא אמור להפסיק את העבודה, הוא אומר לאובייקט תשחרר את כל המשאבים שלך כי סיימתי איתך.
ואם אתה רוצה להפסיק את העבודה עם cancelAsync אתה צריך לשנות תכונה של ה- backgroundWorker ששמה הוא בערך allowsCancelAsync או משהו כזה...
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|