Category «C#»

Articles relating to C# development.

Controlling access to shared resources in an asynchronous world

In my last post I introduced the AsyncLock and AsyncDebouncedFunction.  AsyncLock is a fantastic way of asynchronously holding a ‘lock’ without actually blocking threads.  It is the natural go to class for resource synchronization, but there are alternatives (with caveats). In .Net 4.5 the ConcurrentExclusiveSchedulerPair was introduced, offering a powerful approach to concurrency control.  Using this …

Debouncing asynchronous operations

With the introduction of the async and await keywords, asynchronous programming has finally become achievable by any .Net developer.  Building on the TPL, async and await extend the C# language specification to make task based programming relatively straight forward, and is a huge step forward from APM. However, being able to write code that runs …

Memory Mapped File Performance

In my last post I introduced Memory Mapped Files, and discussed how you could mark them as sparse.  Today, I would like to talk a little about performance.  Using LINQPad (my favourite tool!), I created a rough and ready test script which can be downloaded at the end of the article. The idea was to …

Sparse Memory Mapped Files

Memory mapped files are a powerful addition to the .NET framework in version 4.0.  They’ve been a key part of the windows Operating System since Windows 95, but using them required a working knowledge of COM Interop, as they weren’t exposed directly through the framework.  It’s well worth reading up on them, especially if you’re …

… get in the queue.

OK, so yesterday I returned with a really simple piece of code that’s convenient when building stack frames. After stacks, the next easiest/most convenient structure has to be the queue.  No surprise then that .NET has a similarly generic Queue  class. It seems appropriate to give it the same treatment – public class Queue<T1, T2> …

Stack ’em up!

OK, clearly I have been remiss in my bloging duties and owe you all some code.  To be fair, it’s because I’m head down developing a brand new platform that will form the basis of our future products and it really has been all go. One of the most fundamental structures in programming languages is …

.NET fundamentals – an intro to structs

Every couple of weeks I give an ‘off the cuff’ talk on .NET fundamentals.  Its always fast paced, irreverent, opinionated and completely unprepared (you can tell). Aimed at our developers – as part of their continuous professional development – the 1hr+ talks are recorded and used as part of our training regimen. It’s not for …

The hidden secret of the Concurrent Dictionary

When it comes to my favourite ‘new*’ classes in the .NET BCL, one of my top ten is definitely the ConcurrentDictionary .  So much so, that (after IEnumerable) it’s probably one of the classes I go back to most frequently to solve any particular problem (particularly caches). I still remember the frustration and failure I …

Developing a career

Well it’s been a while since my last post, frankly I’ve been heads down in a code rush (maybe I’ll let you in on it a little later), so I figured for my first post back I best make it a big one.  Following, from the success of my guest lecture at Manchester, I was …