בית
Top.Mail.Ru Yandeks.Metrika
פורום: "ראשי";
ארכיון נוכחי: 2002.01.08;
הורדה: [xml.tar.bz2];

למטה

אשכול: השעיה / המשך וסנכרן מצא סניפים דומים


mitry   (2001-12-15 02:53) [0]

עמיתים יקרים, אנא עזרו, לא ישנתי כבר 3 לילות.
הבעיה היא:
אם לעתים קרובות אתה מושהה (השעיה) ומתחיל (המשך) את החוט שמסנכרן שיחות, ואז כשאתה מצייר מחדש את החלון, התוכנית קופאת לעתים קרובות.
לדוגמה, אם אתה מפעיל את התוכנית הבאה ועובר בינה לבין דלפי, היישום למטה ישתק לנצח:

שימושים
Windows, הודעות, SysUtils, כיתות, גרפיקה, פקדים, טפסים,
דיאלוגים, ExtCtrls, StdCtrls, ComCtrls;

סוג

TMyThread = מחלקה (TThread)
פְּרָטִי
עדכון הליך;
מוּגָן
הליך לבצע; לעקוף;
הסוף;

TMainForm = מחלקה (TForm)
Timer1: TTimer;
הליך FormCreate (השולח: TObject);
הליך FormClose (השולח: TObject; var פעולה: TCloseAction);
הליך Timer1Timer (השולח: TObject);
פְּרָטִי
{הצהרות פרטיות}
MyThread: TMyThread;
ציבורי
{הצהרות ציבוריות}
הסוף;

היה
MainForm: TMainForm;

הפעלה

{$ R *.

הליך TMyThread.Update;
להתחיל
//
הסוף;

הליך TMyThread.Execute;
להתחיל
לחזור על
שינה (100);
סנכרון (עדכון);
עד לסיום;
הסוף;

הליך TMainForm.FormCreate (השולח: TObject);
להתחיל
MyThread: = TMyThread.Creat (שקר);
Timer1.Interval: = 1;
Timer1.Enabled: = true;
הסוף;

הליך TMainForm.FormClose (השולח: TObject; var פעולה: TCloseAction);
להתחיל
Timer1.Enabled: = false;
אם MyThread.Suspended אז MyThread.Rume;
MyThread.Terminate;
MyThread.WaitFor;
MyThread.Free;
הסוף;

הליך TMainForm.Timer1Timer (השולח: TObject);
להתחיל
אם לא MyThread.Suspended אז MyThread.Suspend אחר MyThread.Rume;
הסוף;

זה כל מה שצריך בשביל זה: הכנתי כפתור מונפש: אתה מרחף עליו עם העכבר - הזרם שמנגן את האנימציה מתחיל, אתה מסיר את העכבר - הזרם נעצר. המשתמש יכול להשתמש בעכבר לעתים קרובות למדי, וזו הסיבה שזה מוביל לבעיה שתוארה לעיל.
בתוכנית שלי אינך יכול להשתמש בטיימר במקום בחוטים.
אם מישהו יגיד לך מה העניין, אני אתן לו את המרכיבים הטובים ביותר שלי (כולל כפתור מונפש). אני נשבעת חגיגית.
אני מתנצל על השאלה הארוכה, אך בשום דרך לא קצרה יותר.
Delphi6, Win98.
תודה.



paul_shmakov   (2001-12-16 02:06) [1]

השימוש בהשעיה / קורות חיים במקרה זה אינו הפיתרון הטוב ביותר. וגם השימוש בזרם לכל כפתור זה רע. אך מכיוון שאתה זקוק לזרם, אז מדוע לא להקל: כשנדרש להתחיל לנגן את האנימציה, אנו קובעים את הדגל, שיטת ההפעלה בודקת דגל זה, ואם הוא מוגדר, הוא מצייר את האנימציה. כאשר הסמן עוזב את הכפתור - אפס דגל זה.
הדבר היחיד הוא שלא אמורות להיות בעיות, צריך לשנות את הדגל על ​​ידי קריאה לאחת מהפונקציות המשולבות *. למשל אינטרקלוד אינטרקרנט / הסגר משולב.

"אני מתנצל על השאלה הארוכה, אך בשום דרך לא קצרה יותר."
כל השאלות יהיו כל כך ארוכות ומפורטות :)



עמודים: 1 ענף שלם

פורום: "ראשי";
ארכיון נוכחי: 2002.01.08;
הורדה: [xml.tar.bz2];

למעלה





זיכרון: 0.55 MB
זמן: 0.034 c
3-21995
דמיטרי ד.
2001-12-07 08:00
2002.01.08
שגיאה BDE יצא ... אני לא מבין מה יכול להיות הבעיה


1-22223
ANDREY196
2001-12-16 19:30
2002.01.08
כיצד ליצור אינדקס חי של סמן ANI


7-22418
מיקל
2001-09-20 09:06
2002.01.08
בדחיפות! Comp במקום המדפסת.


1-22036
מַברִיחַ
2001-12-18 14:01
2002.01.08
עורך טקסט


1-22018
דלפיג
2001-12-18 01:51
2002.01.08
הדפס טקסט מתזכיר! יש לי משהו לא בסדר….





אפריקאנס אלבני ערבי אַרְמֶנִי אזרביג'אן הבסקים בלארוסית בולגרי קטלאנית הסיני (פשוט) סינית (מסורתית) קרואטית צ'כיה דני הולנדי אנגלית אסטוני פיליפיני פיני צרפתית
גליציה גאורגיה גרמני יווני קריאולית האיטית עברי הינדי הונגרי איסלנדי אינדונזי אירי איטלקי יפני קוריאני לטבי ליטאי מקדוניה מלאית מלטזית נורבגי
פרסי פולני פורטוגזי רומנית רוסי סרבית סלובקי סלובני ספרדי סוואהילית שבדי תאילנדי תורכי אוקראיני אורדו ויאטנמית וולשית יידיש בנגלית בוסנית
קבואנו אספרנטו גוג'ראטית האוסה המונג איגבו יָאוָנִי קנאדה לחמר לאו הלטינית מאורים מרתי מונגולי נפאלית פונג'בית סומליה טמילית טלוגו יורובה
זולו
Английский Французский Немецкий Итальянский Португальский Русский Испанский