Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Alternativ till så kallade idle loopar (DoEvents) ?

Postades av 2006-11-20 15:11:23 - Rickard Nordström Pettersson, i forum operativ/teknik, Tråden har 6 Kommentarer och lästs av 2764 personer

Jag har ett program som loopar ut data från en databas och vid varje ny "post" från databasen kör jag en subrutin som gör massor med saker och som kallar flera subrutiner. Nu är det så att jag har byggt programmet med DoEvents loopar som ser ut så här:
Do
DoEvents
Loop Until intKlar = 1

Den körs alltså innan RecordSet.MoveNext för att den inte ska loopa ut nästa post i databasen förens programmet kört klart allt den ska. Men nu är det så att mitt program tar upp till 100% av CPU kraften och jag har hört tidigare att DoEvents loopar inte är bra för just att det tar mycket CPU kraft men hur kan jag göra istället?


Svara

Sv: Alternativ till så kallade idle loopar (DoEvents) ?

Postades av 2006-11-20 17:12:53 - Johan Djupmarker

Förstår inte riktigt vad du "väntar på", är det en flertrådad applikation? I sådana fall kan du lägga in en sleep i loopen: [Pausa programexekvering] Annars får du gärna berätta mer om hur din applikation fungerar. Hur anropas koden du väntar på t.ex?

/Johan


Svara

Sv:Alternativ till så kallade idle loopar (DoEvents) ?

Postades av 2006-11-20 18:06:45 - Rickard Nordström Pettersson

Jag har flera olika subrutiner som körs efter varandra bland annat en CSocket och jag vill inte att loopen fortsätter förens den ska, alltså när CSocketen är klar mm.

Det jag alltså vill vilket borde finnas altenrativ till är att den ska alltså vänta med att loopa tills variabeln intKlar = 1 för som jag har nu så sätter programmet intKlar = 1 när programmet ska fortsätta med loopen.

Det hela ska alltså fungera på samma sätt men DoEvents tar för mycket CPU.


Svara

Sv: Alternativ till så kallade idle loopar (DoEvents) ?

Postades av 2006-11-20 20:35:01 - Andreas Hillqvist

Vore det inte bättre att rapportera tillbaks med callback?

Det är mycket svårt att ge dig feedback på dit problem om du inte förlarar vad du gör mer utförligt. Hur strukturen ser ut och varför du "måste" gör på ett sätt.
Det finns alltid flera sätt att lösa ett problem.

För att do loopen inte skall ta lika mycket resuser så kan du sleepa den ås som Johan Djupmarker förespråkar:

Option Explicit

Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

Private Klar As Boolean

Private Sub StartButton_Click()
    Klar = False
    Do
        DoEvents
        Sleep 1
    Loop Until Klar
    MsgBox "Slutförd!", vbInformation
End Sub

Private Sub StopButton_Click()
    Klar = True
End Sub


Svara

Sv:Alternativ till så kallade idle loopar (DoEvents) ?

Postades av 2006-11-20 21:13:01 - Rickard Nordström Pettersson

Programmet loopar data från en databas vid varje "loop" eller varje "post" då jag får information från databasen så kör jag en subrutin som skapar en csocket och som gör olika saker när den connectat mm. och då om jag inte har någon DoEvents loop så fortsätter den loopa genom data från databasen direkt efter första subrutinen körts.

Men jag har då lagt in DoEvents loopen så att den inte fortsätter förens programmet kört alla delar jag vill.

Jag vet inte hur jag ska förklara bättre och jag kan itne ge ut koden då detta är ett lite större projekt. Men jag ska testa Sleep grejen efter DoEvents så får vi se.


Svara

Sv: Alternativ till så kallade idle loopar (DoEvents) ?

Postades av 2006-11-21 02:08:06 - Andreas Hillqvist

Du behöver inte loopa recordsetet.

1. Öppna ditt recordset och Skapar en CSocket
2. Anrop skicka rutin
2.1. Skicka kontrollera om recordsetet nåt EOF
2.1.1. I så fall anropar en upstädnings rutin som aktuell post
2.1.2. Annars utför din request(skickar iväg data och börja lysna efter data).
3. CSocket kontrollen rasiar event att data tagits emot.
3.1. Du anropar rutinen som bearbetar svaret
3.2. Anrop skicka rutin (2.1)

Om jag tolkat din struktur rätt.

Om du inte vill hålla en anslutning mot dina dabas kan du söka på Disconnected Recordset.


Svara

Sv:Alternativ till så kallade idle loopar (DoEvents) ?

Postades av 2006-11-21 09:49:44 - Rickard Nordström Pettersson

Tackar, men mitt problem med CPUn löste sig med Sleep 1 efter DoEvents.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 158
27 952
271 704
1 029
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies