Hej, Hej hmm...Om detta ska ske 1 ggn per timme.. Hej > Skall den loopen stå och gå i flera timmar ?? Då blir verkligen Hej Ja, sänker du prioriteten så tar den ju bara kapacitet som finns ledig. Den snor inget från något annat program. Testa själv med ett litet program jag slängde ihop: http://www.tydal.nu/minne.exe (6 kB). Den tar all kapacitet den får, så du har CPU-användning på 100%, men alla andra program får fortarande det de ber om, så det går ju inte slött. Igen >> Ja, sänker du prioriteten Igen Personligen brukar jag sätta timern på en sekund. Belastningen är så liten att det, i normalfallet, inte är värt besväret med någon annan metod. > Tilläggsfråga , hur får man tag i hProcess ? Det gav mer än jag hoppats på. Jag tror att jag går på den enklaste lösningen: köra på 10 sek intervall och loopa tills jag kommit upp till 60 om jag vill vänta 10 sek. Det var just det med att programmet inte skulle ta en massa onödig kapacitet, men det märks ju knappast som någon påpekade. Hej Fast det funkar väl bara på winnt och uppåt? Varför inte ställa in timern på 30-60 sek eller nåt och kolla mot systemklockan varje gång?Timer mer sällan än 10 sek
jag funderar på att använda någon timer som kör igång någon gång i timmen. Det känns onödigt att generera ett timeravbrott vart 10e sekund bara för det. Finns det något annat sätt att låta mitt program vänta?Sv: Timer mer sällan än 10 sek
Var 10 sek är väl ingen större belastning,men man
skulle kunna tänka sig en lösning 1ggn i minuten.
När det sedan är 2 minuter kvar låter man timern
växla till intervall 10 sek.
Jobbet måste ju göras någonstans så belastning blir det alltid.
mvh
SvenSv: Timer mer sällan än 10 sek
Utnyttja systemklockan och så har du en loop som ligger och känner av systemklockan. Skapa en klass som har det som uppgift.
//NettanSv: Timer mer sällan än 10 sek
>Utnyttja systemklockan och så har du en loop som ligger och känner av
>systemklockan.
Skall den loopen stå och gå i flera timmar ?? Då blir verkligen
systemet belastat i onödan.
Tycker
SvenSv: Timer mer sällan än 10 sek
> systemet belastat i onödan.
Det är ju bara att sänka prioriteten. Inte mer med det. Datorn är ju alltid lika mycket belastad hur man än gör. Det är ju inte så att den inte gör någonting bara för att man inte har något program igång. Att göra ingenting är lika påfrestande för datorn som att utföra avancerande beräkningar.
Att ligga på under 100% CPU-användning är alltså slöseri med el :-)Sv: Timer mer sällan än 10 sek
> > systemet belastat i onödan.
njaaaaaaaa ?, håller detta ?, om vb ligger och kör en loop
så måste väl alla andra progam som är igång få sämre
prestanda, Vb stjäl kapacitet i onödan.
Att det sedan inte märks är en helt anna sak.
DS Sv: Timer mer sällan än 10 sek
Sv: Timer mer sällan än 10 sek
>Ja, sänker du prioriteten
Vad menas DoEvents eller Yield
Undrar
SvenSv: Timer mer sällan än 10 sek
> Vad menas DoEvents eller Yield
Lägre nivå än så. Man ändrar processens prioritet som direkt anger för Windows Task Manager hur ofta den ska ge CPU-tid till programmet.
Funktionen heter SetPriorityClass (winapi) och finns i kernel32.dll.
Sätter man den på IDLE_PRIORITY_CLASS så får programmet bara den CPU-tid som blir över när alla andra program tagit sitt.Sv: Timer mer sällan än 10 sek
Intressant information ,fick jag lära mig något nytt.
Har alltid trott att resurserna delades lika i pågående processer.
Om jag förstått det rätt så är det med denna teknik
som Skärmsläckaren fungerar.
Tilläggsfråga , hur får man tag i hProcess ?
ha det
SvenSv: Timer mer sällan än 10 sek
Skulle det vara så att det finns speciella skäl kan man alltid implementera en sorterad kö av händelser som skall utföras. Timern ställs då in så att den löser ut när den första händelsen på kön är "mogen". Är denna tid för lång för timern så ställer man timern på maxtid och gör en ny koll nästa gång.
Vad det gäller loopar som pollar systemklockor eller annat anser jag att de bör undvikas, även om man sätter ned prioriteten. Det kan finnas andra applikationer som använder en låg prioritet... Dessutom, som före detta sysadmin, är det inget kul att spåra flaskhalsar i maskiner som har sådana CPU-ätare. Det går liksom inte att se att CPU-lasten har förändrats eftersom den alltid är 100%.
/COSv: Timer mer sällan än 10 sek
Den aktuella processen får du med GetCurrentProcess, också det i Kernel32.dll.Tack för den uttömmande diskussionen
Intressant att angripa problemet med att sänka prioriteten. Sv: Tack för den uttömmande diskussionen
Du väljer 10 sek men Obs Timern är inte ett dugg pålitlig
som tidmätare så du får inte tro att du prickar rätt på 10 sek när.
DSSv: Timer mer sällan än 10 sek
Xp verkar ha ännu fler nivåer om man tittar i taskmangagern iallafall..
/Rickard (Som egentligen inte har någon aning)
Ps: Förrut kunde jag högerklicka på en dll och dra igång dependency walker har jag för mej men inte längre.. Nån som vet hur man fixar såna grejer??Sv: Tack för den uttömmande diskussionen
Ale Thoor