Pu sembrare strano ma ho la necessit di attendere che una applicazione di terzi che lavora in background mi crei un file da cui io poi estraggo una serie di dati, quindi in caso di errore all’apertura del file con “NIL” o “exists” non devo uscire dalla mia applicazione ma aspettare fino a che non ho pi i due errori ed a quel punto proseguire.
Avete qualche suggerimento perch non ho trovato nessun esempio che mi potesse aiutare, grazie
usa un timer, in mode = 2 e imposta i millisecondi, nella sua “action” controlli se il file.exist e fai quello che devi fare (impostandoper ultimo a mode = 0 il timer, altrimenti continuerebbe a eseguire il codice nella “action”)
pota boh ( come si dice a Bergamo… ) ;
prova con un thread …
lo fai partire
Dim dbFile As FolderItem
dbFile = GetFolderItem(NomeDelFileCheStaiAspettando)
while dbFile.Exists = False
exit loop if dbfile.exists
// avvia il timer magari per un secondo altrimenti ti esplode il PC
wend
// sono uscito dal LOOP
avvio quello che devo fare con il file
Magari ho scritto una cazzata… o magari funziona.
O magari tutte e due
ciao Max
Ahahah grazie per la dritta ho provato e con una piccola aggiunta funzione, in pratica ho controllato sia che esista sia che non sia vuoto cos:
Dim f As FolderItem
dim q as Integer = 1
While q <> 0
f = GetFolderItem(“nome file”)
if f <> Nil and f.Exists then
q = 0
end if
wend
cos funziona, grazie per il suggerimento
Potresti semplificare e mettere magari anche un timeout sulla verifica (nell’esempio di 10 secondi), onde evitare che se il file non arriva, l’applicazione rimanga bloccata.
dim f as FolderItem = GetFolderItem("percorsoFile",3)
dim start as Double = Microseconds
While Not f.Exists or f.Locked or Microseconds-start>10*10^6
wend
Per essere poi certi che il file non sia ancora in qualche modo ancora allocato dal programma di terze parti che lo ha creato, potresti testare anche la modalit folderItem.Locked.
Con GetFolderItem, onde evitare problemi, sempre meglio indicare anche la modalit di interpretazione del percorso:
GetFolderItem(“percorsoFile”,3)
In ultimo, tieni presente che loop “molto intensi” come questo, tendono a far alzare il consumo di CPU.
L’idea del thread non sbagliata.
Il problema capire quando il file completo a meno che non ti interessa leggerne il contenuto man mano che viene scritto.
Ciao Antonio, non ho quel problema perch quando l’altra applicazione chiude e rilascia il file questo per forza completo perch composto da una sola stringa con i dati separati da TAB quando l’ho letto lo cancello per evitare che l’altra apllicazione in background mi accodi altri dati.
Aggiunger il timer e se il file locked come suggerito da Pietro giusto per evitare che il programma rimanga in un loop eterno anche se non dovrebbe essere possibile perch vado a leggerlo solo se ho verificato certe condizioni comonque un controllo in pi non fa mai male, grazie e ciao