Տուն
Top.Mail.Ru Moscow
Ֆորում: «Գլխավոր»;
Ընթացիկ արխիվը `2002.01.08;
Բեռնել: [xml.tar.bz2];

Down

Թեմա `կասեցնել / ռեզյումեն եւ համաժամացնել Գտնել նմանատիպ մասնաճյուղեր


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

Հարգելի գործընկերներ, խնդրում եմ օգնեք, ես արդեն չէի քնել 3 գիշերներ:
Խնդիրն այն է.
Եթե ​​դուք հաճախ դադար եք անում (Կասեցնում) և սկսում (Վերսկսել) այն շարանը, որը համաժամացնում է զանգերը, ապա պատուհանը վերափոխելուց հետո ծրագիրը հաճախ սառեցնում է:
Օրինակ, եթե վարում եք հետևյալ ծրագիրը և անցում եք կատարում դրա և Դելֆիի միջև, ապա ներքևում նշված դիմումը հավերժ լռելու է.

uses
Windows, Messages, SysUtils, դասընթացներ, գրաֆիկա, վերահսկում, ձեւեր,
Երկխոսություններ, ExtCtrls, StdCtrls, ComCtrls;

տիպ

TMyThread = դաս (TThread)
անձնական
ընթացակարգի թարմացում;
պաշտպանված
ընթացակարգը կատարում; անտեսում;
վերջը.

TMainForm = դաս (TForm)
Timer1- ը `TTimer;
ընթացակարգ FormCreate (Ուղարկող `TObject);
ընթացակարգ FormClose (Sender: TObject, var Action: TCloseAction);
ընթացակարգ Timer1Timer (Ուղարկող `TObject);
անձնական
{Անձնական հայտարարություններ}
MyThread: TMyThread;
հասարակություն
{Հանրային հայտարարություններ}
վերջը.

էր
Գլխավոր ձեւ: TMainForm;

իրականացում

{$ R * .dfm}

կարգը TMyThread.Uddate;
սկսել
//
վերջը.

ընթացակարգ TMyThread.Execute;
սկսել
կրկնել
Քնել (100);
Համաժամացնել (թարմացնել);
մինչեւ դադարեցված;
վերջը.

ընթացակարգ TMainForm.FormCreate (Ուղարկող `TObject);
սկսել
MyThread: = TMyThread.Create (կեղծ);
Timer1.Interval: = 1;
Timer1.Enabled: = true;
վերջը.

ընթացակարգ TMainForm.FormClose (Ուղարկող ՝ TObject; var Action: TCloseAction);
սկսել
Timer1.Enabled: = false;
եթե MyThread.S կասեցված է, ապա MyThread.Resume;
MyThread.Terminate;
MyThread.WaitFor;
MyThread.Free;
վերջը.

ընթացակարգ TMainForm.Timer1Timer (Sender: TObject);
սկսել
եթե ոչ MyThread.- ը կասեցված է, ապա MyThread- ը: Այլևս կասեցրեք MyThread.Resume;
վերջը.

Դա այն է, ինչն անհրաժեշտ է դրա համար. Ես անիմացիոն կոճակ եմ պատրաստել. Դուք մկնիկի միջոցով սավառնում եք. Սկսվում է անիմացիա խաղացող հոսքը, սկսվում է մկնիկը, հեռացնում եք մկնիկը. Հոսքը դադարում է: Օգտագործողը կարող է բավականին հաճախ օգտագործել մկնիկը, ինչի պատճառով սա հանգեցնում է վերը նկարագրված խնդրի:
Իմ ծրագրում, թելերի փոխարեն չես կարող օգտագործել Timer:
Եթե ​​ինչ-որ մեկը ինձ ասի, թե որն է խնդիրը, ես նրան կտամ իմ լավագույն բաղադրիչները (ներառյալ անիմացիոն կոճակը): Ես հանդիսավորորեն երդվում եմ:
Ես ներողություն եմ խնդրում երկար հարցի համար, բայց ոչ մի դեպքում ավելի կարճ:
Delphi6, Win98:
Շնորհակալություն:



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

Այս դեպքում կասեցման / վերսկսման օգտագործումը լավագույն լուծումը չէ: և յուրաքանչյուր կոճակի համար հոսք օգտագործելը նույնպես վատ է: բայց քանի որ ձեզ հարկավոր է հոսք, այդ դեպքում ինչու՞ ավելի հեշտացնել. երբ անհրաժեշտ է սկսել անիմացիայի խաղարկումը, մենք դրոշ ենք դնում, կատարման եղանակը ստուգում է այս դրոշը, և եթե այն տեղադրված է, նկարում է անիմացիան: երբ կուրսորը թողնում է կոճակը - վերակայեք այս դրոշը:
որպեսզի խնդիր չլինի, դրոշը պետք է փոխել ՝ անվանելով «Ինտերկլոկավորված» գործառույթներից մեկը: օրինակ ՝ InterlockedIncrement / InterlockedDecrement:

«Ես ներողություն եմ խնդրում երկար հարցի համար, բայց ոչ մի կերպ ավելի կարճ»:
բոլոր հարցերը կլինեն այնքան երկար և մանրամասն :)



Էջեր: 1 ամբողջ ճյուղը

Ֆորում: «Գլխավոր»;
Ընթացիկ արխիվը `2002.01.08;
Բեռնել: [xml.tar.bz2];

Up





Հիշողություն `0.55 ՄԲ
Ժամանակը `0.021 գ
6-22300
evgen_2001
2001-10-04 12:25
2002.01.08
Հաղորդագրություններ փակցնում


6-22310
SERGX- ը
2001-10-13 23:48
2002.01.08
ՀԱՐՑ: Ինչպես ստեղծել ծրագիր `ֆայլի կամ տեքստի փոստով ուղարկելու համար


14-22331
vasco
2001-10-26 17:57
2002.01.08
Ծրագրավորողների շրջանում շատ մնացորդներ կան:


1-22129
Aleksandr
2001-12-19 16:04
2002.01.08
Ինչպես հեռացնել ձեր սկավառակի շրթունքները:


14-22378
մոդերատոր
2001-11-08 07:51
2002.01.08
> Մերիլին





afrikaans ալբանական արաբական հայերեն ադրբեջանական Բասկերի Բելառուսի Բուլղարիայի catalan Չինարեն (պարզեցված) Չինարեն (ավանդական) Խորվաթիայի չեխ դանիերեն հոլանդական Անգլերեն
Էստոնիայի filipino ֆիններեն ֆրանսերեն
galician վրացական գերմանական հունարեն haitian Creole եբրայերեն հինդի հունգարերեն icelandic հայերեն իռլանդական իտալական ճապոնացի Կորեայի Լատվիայի Լիտվայի մակեդոներեն Մալայերեն մալթերեն նորվեգական
պարսկական Լեհաստանի պորտուգալացի ռումինական ռուսական սերբերեն Սլովակիայի Սլովենիայի իսպաներեն սուահիլի շվեդերեն թայերեն թուրքական ուկրաինական ուրդու վիետնամերեն ուելսերեն հայերեն bengali բոսնիերեն
Cebuano Esperanto գուջարաթի հաուսա Hmong Igbo ճավաերեն kannada Khmer Lao լատիներեն մաորի մարաթի մոնղոլական նեպալերեն Punjabi Somali tamil telugu յորուբա
զուլուսերեն
Անգլերեն Французский Немецкий Итальянский Португальский Русский Испанский