capuccino_fr
Messages postés113Date d'inscriptionvendredi 5 mars 2004StatutMembreDernière intervention11 février 2008
-
6 janv. 2005 à 17:50
capuccino_fr
Messages postés113Date d'inscriptionvendredi 5 mars 2004StatutMembreDernière intervention11 février 2008
-
7 janv. 2005 à 16:37
Bonjour à tous,
je code en vb .net. et j'ai besoin d'aide, svp
Je cree un fichier de log pour une appli, que je veux relire apres , dans une form qui pourra me donner les journaux par date. Ca fonctionnait tres bien jusqu'a ce que j'inclue de nouvelles mises a jour dans cette application, et qui me donnennt un resultat:
"Le processus ne peut pas acceder au fichier "...\rapport.log" car il est en cours d'utilisation par un autre processus". Je ne comprends pas, meme en debuggage je referme bien mon streamreader, avant de vouloir l'effacer.
Voici le bout du code qui pose probleme:
File.Create(dossier_Rapport & "\RapportTmp.log")
Dim journal As StreamReader = File.OpenText(dossier_Rapport & "\Rapport.log")
'Wait(10)
Do
buffer = journal.ReadLine()
If buffer <> "" Then
If InStr(buffer, "Journal au :") Then
Dim i As Integer = buffer.IndexOf(":")
Dim dateJournal As String = buffer.Substring(i + 2, 10)
If DateDiff(DateInterval.Day, CDate(dateJournal), Now) > 30 Then
Do
buffer = journal.ReadLine
Loop Until InStr(buffer, "--------------") <> 0
Else
Dim journalTmp As StreamWriter = File.AppendText(dossier_Rapport & "\RapportTmp.log") // on ouvre un streamwriter temporaire
Do
journalTmp.WriteLine(buffer)
buffer = journal.ReadLine
Loop Until InStr(buffer, "--------------") <> 0
journalTmp.WriteLine("---------------------------------------------------")
journalTmp.Close() // on ferme a chaque fois le temporaire
Wait(5)
End If
End If
End If
Loop Until buffer Is Nothing
journal.Close() // LA JE FERME BIEN LE STREAMREADER NON????
Wait(5)
...
le wait (si vous vous demandez ce que c'est):
Private Shared Sub Wait(ByVal n As Integer)
For i As Integer = 1 To n
System.Threading.Thread.Sleep(1)
Application.DoEvents()
Next
End Sub
Et donc, je ne sais plus quoi faire, je dois bientot rendre cette appli
pas cool, donc
je me demandais si ca n'avait pas quelquechose a voir avec ce qui est appelé "thread safe" et tout ca.
Si l'un d'entre vous peut m'eclairer a ce sujet, ce serait cool.
MERCI D'AVANCE
Vaut mieux etre bourré que con: ca dure moins longtemps...
A voir également:
Erreur de reecriture dans un fichier [VB.Net] - thread-safe
cboulas
Messages postés2641Date d'inscriptionmercredi 2 juin 2004StatutMembreDernière intervention 8 janvier 201416 7 janv. 2005 à 14:32
Salut, déjà si tu rencontre des erreurs c'est qu'un utilisateur pourra aussi en rencontré, donc place le tout dans un Try Catch Finally comme ceci :
Dim journal As StreamReader = File.OpenText(dossier_Rapport & "\Rapport.log")
'Wait(10)
Try
Do
buffer = journal.ReadLine()
If buffer <> "" Then
If InStr(buffer, "Journal au :") Then
Dim i As Integer = buffer.IndexOf(":")
Dim dateJournal As String = buffer.Substring(i + 2, 10)
If DateDiff(DateInterval.Day, CDate(dateJournal), Now) > 30 Then
Do
buffer = journal.ReadLine
Loop Until InStr(buffer, "--------------") <> 0
Else
Try
Dim journalTmp As StreamWriter = File.AppendText(dossier_Rapport & "\RapportTmp.log") // on ouvre un streamwriter temporaire
Do
journalTmp.WriteLine(buffer)
buffer = journal.ReadLine
Loop Until InStr(buffer, "--------------") <> 0
journalTmp.WriteLine("---------------------------------------------------")
Catch ex2......
messagebox.shox(ex2.tostring)
Finally
journalTmp.Close() // on ferme a chaque fois le temporaire
End Try
Wait(5)
End If
End If
End If
Loop Until buffer Is Nothing
catch ex.......
messagebox.show(ex.tostring)
Finally
journal.Close()
End Try
Wait(5)
Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
capuccino_fr
Messages postés113Date d'inscriptionvendredi 5 mars 2004StatutMembreDernière intervention11 février 2008 7 janv. 2005 à 16:37
Merci bien, ca va m'aider, mais j'ai trouvé une autre erreur de fermeture dans une procedure d'initialisation d'un autre form, qui n'etait pas sensé influer ici, ou alors me donner une erreur lors de l'instanciation d'un nouveau streamreader.
Lorsque j'avais essayé d'inserer un autre try catch dans celui ci j'avais eu une erreur, donc je me suis dit que ce n'etait pas possible. Le finally, je ne l'ai pas utilisé mais c'est bien pratique effectivement.
J'ai commencé le.net cette annéé, donc j'ai plein de fonctions a decouvrir et a apprendre
Merci beaucoup encore Chris
Vaut mieux etre bourré que con: ca dure moins longtemps...