Bonjour,
J'ai une classe héritée de TraceSource pour personnaliser les messages. Celle-ci a toujours fonctionné très bien sauf que cette fois j'emet des messages également depuis un Thread secondaire et au bout d'un moment j'ai cette erreur. Et je ne sais pas comment régler le problème afin que ma classe puisse fonctionner depuis n'importe quel Thread.

PS : La procédure ControlFileSize permets d'effacer le fichier de trace si celui-ci dépasse une certaine taille. En même temps je me pose la question de savoir si j'ai bien fait d'implémenter cette fonction et si il n'existe pas déjà cette fonction dans la classe d'origine mais je n'ai pas trouvé.

J'ai mis un extrait de ma classe ci-dessous, si besoin je peux fournir la classe complète.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Public Class clsTraceSource
    Inherits TraceSource
 Public Overloads Sub TraceEvent(eventType As System.Diagnostics.TraceEventType, id As Integer, message As String)
        Call _TraceEvent(eventType, id, message, ProfilTrace.Defaut)
    End Sub
    Public Overloads Sub TraceEvent(eventType As System.Diagnostics.TraceEventType, id As Integer, message As String, profil As ProfilTrace)
        Call _TraceEvent(eventType, id, message, profil)
    End Sub
    Private Sub _TraceEvent(eventType As System.Diagnostics.TraceEventType, id As Integer, message As String, _
                                    profil As ProfilTrace)
  .....
          If eventType <= Me.Switch.Level Then
            For Each _listener As TraceListener In Me.Listeners
                If _listener.GetType Is GetType(TextWriterTraceListener) Then
                    Dim strFilePath = FilePath(_listener)
                    Call ControlFileSize(strFilePath)
                End If
 
                Dim msg As String = ""
.....
                msg = arg(0) & arg(1) & arg(2) & Convert.ToChar(Keys.Tab) & arg(9) & arg(10) & message
 
                _listener.WriteLine(msg)
                _listener.Flush()
            Next
        End If
    End Sub
 
  Private Sub ControlFileSize(ByVal filepath As String)
        Try
            Dim Fi = New System.IO.FileInfo(filepath)   ' Cette ligne provoque une exception
            If Fi.Exists And Fi.Length > _twfileSize Then
                Me.Close()
                Fi.Delete()
            End If
        Catch ex As Exception
        End Try
    End Sub
End Class
J'aimerais beaucoup que vous puissiez m'aider, j'ai presque fini mon programme et j'aimerais bien faire fonctionner ma classe.