Har ett program som var 3:e sekund tittar i en mapp efter en text fil och finns det en fil så börjar den en import process. Men var tredje sekund skickar den cpu:n i taket 100% fast än jag satt prioritet till Låg. (Priority IDLE) Kör du någon form av loop? I sådana fall borde du kunna lägga till en sleep i varje iteration. Men vad är det för fel med 100% CPU? Har du satt låg prioritet innebär det att det inte påverkar andra processer speciellt mycket, programmet tar den "kraft" som blir kvar. Om du har något igång som tar 50% cpu kommer du se att din applikation inte tar 100% längre. Varför vill du inte använda all CPU när den ändå inte används till något annat? Skriv DoEvents i alla dina loopar så operativet får tid att jobba. <b>Skriv DoEvents i alla dina loopar så operativet får tid att jobba.</b> Kanon, skall testa med folder spy. Testat och fungerade perfekt, tusen tack! Nej, du kan inte begränsa till 5% cpu, fungerar inte riktigt så.. Vad ska processorn göra resterande 95% av tiden? Klart att den kan sova, men det känns inte riktigt effektivt.. >Jag förstår att Widows tilldelar programmet det som finns men om flera program snurrar och vill ha CPU?Går det att påverka så programmet inte tar all CPU?
Går det att påverka så programmet inte tar all CPU?Sv: Går det att påverka så programmet inte tar all CPU?
/JohanSv: Går det att påverka så programmet inte tar all CPU?
Varför pollar du istället för att låta filsystemet meddela dig när en textfil skapas i mappen?Sv:Går det att påverka så programmet inte tar all CPU?
Sen som nämns, skriv om det i vb,net och använda FileSystemWatcher istället. Då får du information från servern att en fil skapats, ändrats, raderats eller vad du vill och således tar det mycket mindre kraft på servern.Sv: Går det att påverka så programmet inte tar all CPU?
DoEvents påverkar inte OS:et eller andra applikationer. DoEvents gör att programmet processar alla sina "fönstermeddelanden" som är köade, alltså ritas fönstret om bl.a. och man slipper problemet med att det (fönstret) "fryser".
<b>Sen som nämns, skriv om det i vb,net och använda FileSystemWatcher istället. Då får du information från servern att en fil skapats, ändrats, raderats eller vad du vill och således tar det mycket mindre kraft på servern.</b>
Du behöver inte använda VB.NET (eller något annat .NET-språk för den delen) för att lyssna på filsystemshändelser. Samma funktionalitet kan du anropa genom API. Detta verkar vara ett exempel: http://www.thescarms.com/vbasic/FolderSpy.aspx
/JohanSv:Går det att påverka så programmet inte tar all CPU?
Filen ligger alltid där men innehållet ändras.
DoEvents har jag med!
När man tittar på andra program som ligger och kör så blir det inga CPU spikat till 100% där.!?
Så det går inte låsta att programmen endast får 5%CPU typ?
Jag förstår att Widows tilldelar programmet det som finns men om flera program snurrar och vill ha CPU?
Kan inte göra allt i VB.Net än...Men bor någon i närheten av Karlstad så är ni välkommna till mitt kontor.Sv: Går det att påverka så programmet inte tar all CPU?
OS har en schemaläggare för processorn/-erna som väljer vilken tråd (som inte är pausad) som ska köras, och det är här det där med prioritet kommer in i bilden; en tråd med högre prioritet kommer få mer tid tilldelad än en tråd med lägre prioritet.
Att din tråd (eller process/program om du kör enkeltrådat) får 100% är inte så konstigt; schemaläggaren har konstaterat att det inte finns någon annan tråd som vill ha cpu-tid (sanning med modifikation dock, kärnan vill t.ex. ha cpu-tid, och säkert ett gäng andra processer, men det är försumbart i det här fallet anser jag..), och finns det ingen annan tråd som vill ha cpu-tid så är det enbart din tråd kvar; att dela upp 100% cpu-tid på 1 tråd innebär att den enda tråden kommer få 100%..Sv: Går det att påverka så programmet inte tar all CPU?
Du har ju satt lägre prioritet på ditt program. Då kommer inte ditt program att använda CPUn om något annat program behöver den.
>Så det går inte låsta att programmen endast får 5%CPU typ?
Förstår inte vad du vill uppnå med det.
- Om du vill att ditt program skall gå långsammare använd Sleep (och ev. DoEvents)
- Om du vill att ditt program inte skall ta CPU från andra program använd prioritet.
> DoEvents har jag med!
Lägga till saker utan att veta vad de gör är ingen bra strategi.