[vc++] hoe zoeken naar een file en dan stoppen?

Pagina: 1
Acties:

  • Lord_T
  • Registratie: Oktober 2000
  • Laatst online: 31-07 09:50
Ik wil iets maken dat moet rekenen gedurende een bepaalde tijd totdat er een event is (de aanwezigheid van een file) en dan moet hij stoppen met rekenen, die file inlezen en dan weer verder gaan met rekenen. Dit moet een continu process worden. Op papier ziet dat er alsvolgt uit:

code:
1
2
3
4
5
while no event
         calculate
if event= new file
         read file;
         calculate;


Waarop moet ik zoeken als ik iets dergelijks zou willen maken? Zijn hier standaard functies voor? kan iemand mij een hint geven in welke richting ik anders moet denken / zoeken op google ofzo? Want ik heb momenteel geen idee.... En dan denk ik dat ik het wil linken aan de systeem timer.... maakt dat het makkelijker of moeilijker?

Kijk het laten rekenen is geen probleem, maar het laten stoppen als er een nieuwe file gevonden wordt in een opgegeven directory? Geen idee hoe je moet zorgen dat hij zeg maar iedere zoveel seconde even zoekt naar een nieuwe file.....

ja ja... niet iedereen heeft dezelfde kennis... wees daarom ook eens gewillig en geef een antwoord op een vraag ;)


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 17:28

alienfruit

the alien you never expected

je zou eens kunnen kijken naar FindFirstChangeNotification. Of File Notication dan krijg je een bericht als een bestand gewijzigd wordt in een bepaalde directory. Of anders gewoon FindFirst/FindNext gebruiken en een directory lopen en dan kijken welke files al bekend zijn en welke niet.

http://msdn.microsoft.com...rstchangenotification.asp

http://msdn.microsoft.com..._change_notifications.asp

http://msdn.microsoft.com..._change_notifications.asp

[ Voor 117% gewijzigd door alienfruit op 04-08-2003 19:19 ]


Verwijderd

linken aan je system timer vind ik makkelijker, dan is je programma tussendoor ook idle zodat het niet alles wegvreet. En nee, dat is niet echt moeilijker

  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

Zoals alienfruit al zei kun je FindFirstChangeNotification gebruiken. Die set een event zodra er een bestand wijzigt in een bepaalde dir.. Je kunt dan in programma een loop maken voor het rekenen, en aan het begin van de loop een WaitForSingleObject op de event handle met een timeout van 0 zetten. Zo checkt ie of het event geset is, zoja kijk je of de file veranderd is en update je de gegevens.

www.madwizard.org


  • Lord_T
  • Registratie: Oktober 2000
  • Laatst online: 31-07 09:50
ok... en dat linken aan een systeem timer? Dat zorgt hopelijk ervoor dat het minder processor kracht wegvreet tijdens het rekenen? Aan wat voor commando's moet ik dan denken?

Ik bedoel is er zoiets als
code:
1
2
3
4
5
6
7
8
for ( iedere 60 seconde) 
           if(firstchangenotification)
                stop calculate; 
                import new file;
                update data;
           else
                continue calculating;
end for

ja ja... niet iedereen heeft dezelfde kennis... wees daarom ook eens gewillig en geef een antwoord op een vraag ;)


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:56
Als het rekenen volledig onafhankelijk van het invoeren van gegevens gebeurd (bijvoorbeeld omdat de gegevens aan het einde van een thread safe queue worden toegevoegd) dan hoef je het hele rekenen niet te onderbreken. Je maakt dan gewoon een thread waarin je rekent en een thread waarin je de message pump gaande houdt. Om te constateren of een bestand bestaat kun je dan de genoemde events gebruiken of een timer plaatsen en pollen.

Als het rekenen op te delen is in min of meer gelijke stappen (van bijvoorbeeld 1000 berekeningen die samen gemiddeld een seconde duren) dan kun je natuurlijk een lusje maken waarin je wat rekenstappen uitvoert, het databestand pollt, en weer verder gaat. Dat is makkelijker omdat je geen gedoe met threads hebt. Uiteraard kan je in je "spare time" ook gewoon de message pump aanzwengelen en eerder genoemde notifications afhandelen.
Pagina: 1