Version 1.1

Rating: No reviews yet
Downloads: 132
Change Set: d77b39e18a9c
Released: Feb 16, 2017
Updated: Feb 16, 2017 by PeterHuberSg
Dev status: Stable Help Icon

Recommended Download

Application ACoreLib.dll
application, 29K, uploaded Feb 16 - 88 downloads

Other Available Downloads

Application ACoreLib.pdb
application, 76K, uploaded Feb 16 - 44 downloads

Release Notes

Adding Flushing, i.e. moving trace message from temporary to final buffer on demand

Every trace message gets temporarily stored in a ringbuffer, so that the thread doing the trace gets hardly delayed (about 1 microsecond). A timer is run on another thread, copying the trace messages every 100 milliseconds to the final trace ringbuffer and calling any listeners of MessagesTraced event for further processing, which can be slow, like writing to a file.

This caused some problems, when for example the application made a trace and closed immediately. The 100 millisecond timer did not run and no event listener got called. It seemed like the Tracing was not working. A similar problem happened when the trace got inspected after an exception with GetTrace(), because again, the timer did not run yet. For these cases, a Flush() method got added, which forced the timer to run immediately, to move all message from temporary to permanent ring buffer, to call the event listeners and only then to return.

LogFileWriter got a Dispose() method and destructor, which guarantee that when the application gets closed, all trace message get written to the trace file up to the call of these methods. Before, the trace messages of between 0 and 100 milliseconds were missing.

The DotNet framework version got lowered to 4.0.

Breaking change

TraceMessage[] GetTrace(Action<TraceMessage[]> MessagesTracedHandler) got renamed to

TraceMessage[] AddMessagesTracedListener(Action<TraceMessage[]> MessagesTracedHandler) to better reflect the real purpose of the method.

Reviews for this release

No reviews yet for this release.