KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have written a console application that makes use of console.write and console.writeline to provide some logging. The application is a server application that uses asynchronous beginacceptconnection() and beginread() ( Sockets ) for communication. Occasionally i get reports of it hanging and from the limited debug i can do i am able to see the problem being Console.Writeline() or Console.write(). Being multi-threaded I have been careful to have a lock around the logging class so only one thread can log a message at once.....when I've caught a hang all i get are threads blocking on the lock and VS reporting that the control has passed into Console.Write and it is waiting for it to come back....it never does. A couple of days ago i got another report of a failure but this time during bootup....where no asynch connections have yet been kicked off( the main thread does spawn a thread to bootup though ) and I was sent a picture.....see below.( i added the begin and end critical section lines to prevent this and it did not ) // Logging Class public class Logging { // Lock to make the logging class thread safe. static readonly object _locker = new object(); public delegate void msgHandlerWriteLineDelegate(string msg, Color col); public static event msgHandlerWriteLineDelegate themsgHandlerWriteLineDelegate; public delegate void msgHandlerWriteDelegate(string msg, Color col); public static event msgHandlerWriteDelegate themsgHandlerWriteDelegate; public static void Write(string a, Color Col) { if (themsgHandlerWriteDelegate != null) { lock (_locker) { themsgHandlerWriteDelegate(a, Col); } } } public static void Write(string a) { if (themsgHandlerWriteDelegate != null) { lock (_locker) { themsgHandlerWriteDelegate(a, Color.Black); } } }
Tags (comma-separated)
Save Edits
Cancel