Précédent   Forum du club des développeurs et IT Pro > Dotnet > Général Dotnet > Framework .NET
Framework .NET Vos questions relatives à l'utilisation des différents Framework .NET
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/11/2012, 15h56   #1
Arnard
Membre Expert
 
Homme Arnaud
Développeur .NET
Inscription : avril 2006
Messages : 1 386
Détails du profil
Informations personnelles :
Nom : Homme Arnaud
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2006
Messages : 1 386
Points : 1 582
Points : 1 582
Par défaut Console.WriteLine : Condition de concurrence critique d'E/S

Hello,

je reçois cette exception, toujours levée au même endroit

Code :
1
2
3
4
5
6
7
8
 
DEBUG      2012-11-19 14:26:17,505 AcquisitionTerrainServeur AcqTerrainServ -- NotifierVariablesChanged -- Exception : Condition de concurrence critique d'E/S probable détectée lors de la copie dans la mémoire. Le package d'E/S n'est pas thread-safe par défaut. Dans des applications multithread, l'accès au flux doit se faire de façon thread-safe, par exemple un wrapper thread-safe retourné par les méthodes Synchronized de TextReader ou TextWriter. Cela s'applique également aux classes telles que StreamWriter et StreamReader.
Stack :    à System.Buffer.InternalBlockCopy(Array src, Int32 srcOffsetBytes, Array dst, Int32 dstOffsetBytes, Int32 byteCount)
   à System.IO.StreamWriter.Write(Char[] buffer, Int32 index, Int32 count)
   à System.IO.TextWriter.WriteLine(String value)
   à System.IO.TextWriter.SyncTextWriter.WriteLine(String value)
   à AcquisitionContracts.Terrain.AcquisitionTerrainClient.FireListeVariableInfo(List`1 VariablesChanged)
   à AcquisitionContracts.Terrain.AcquisitionTerrainServeur.NotifierVariablesChanged()
Cette méthode commence par faire un appel à une méthode Trace, qui effectue un simple Console.WriteLine, le reste du code étant juste de lever un événement en asynchrone.

Ce qui me choque, c'est que la classe Console est marquée thread-safe, et de plus je ne vois pas d'appel à Console.WriteLine dans la stack, c'est direct TextWriter.SyncTextWriter.WriteLine. A côté j'utilise log4net pour une autre partie du débogage qui renvoie à la fois vers un fichier .txt et vers la console, et je n'avais jamais rencontré ce souci avant...

Une explication ?

Merci
Arnard est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 01h56.


 
 
 
 
Partenaires

Hébergement Web