Introducing Parallel Extensions to the .NET Framework

There is no escaping from concurrency challenges… or is there? (A slightly modified version of this article was published in the August 2008 edition of the MSDN Flash newsletter) Dual, quad, and eight-core processors are becoming the norm. Is your application capable of utilising all available processors? In order to achieve this level of utilisation…


ADO.NET Data Services: CLR-based data models and navigation links

As you are probably aware, one of the new additions to the .NET Framework 3.5 SP1 is a technology called ADO.NET Data Services (code name Astoria). ADO.NET Data Services natively supports ADO.NET Entity Framework (EF) models. However Data Services it is not limited to EF. ADO.NET Data Services can deploy consistent representations of data regardless…


.NET debugging made easier

Not sure about you but I was not aware of the existence of the DebuggerStepThroughAttribute. Debugging code can be difficult at times and any tool or mechanism that can ease this pain is always welcome. As far as the CLR is concerned, there is no semantic attached to this attribute. However Visual Studio does not…


System.Core.dll of .NET Framework 3.5

I recently wrote an MSDN Flash article on the hidden gems of System.Core.dll of .NET Framework 3.5 which was published in the October issue of the MSDN Flash. Here is a copy of that article: If you have played with Visual Studio 2008, chances are that you have come across the System.Core.dll which is automatically…


A Performance Comparison of ReaderWriterLockSlim with ReaderWriterLock

If you have ever used the System.Threading.ReaderWriterLock to achieve synchronised access to shared resources which are frequently read but infrequently updated then you probably know why we have created a new Reader/Write lock. In this MSDN Magazine’s concurrent affairs column, Jeffery Richter explains some of the short comings of the existing ReaderWriterLock in .NET Framework….


ThreadAbortException and Unmanaged Code

As you are probably aware Thread.Abort() raises a ThreadAbortException in the thread on which it is invoked, to begin the process of terminating the thread. Please note that if Abort is called on a managed thread while it is executing unmanaged code, a ThreadAbortException is not thrown until the thread returns to managed code. That…


.NET ServicedComponents and STA Apartment

A major issue with running all COM components using STA threads is that the thread which calls CoInitializeEx must be the only thread executing method invocations on that COM instance. Now assume a scenario in which the STA thread is busy performing other activities. In those scenarios you will receive an exception similar to the…


Dedicated thread or a Threadpool thread?

Each .NET CLR based process is given a pool of threads. The size of the thread pool is configurable however by default the maximum number of threads created by the thread pool is set to 1000 IO threads in total, and 25 worker threads per logical or physical processor. In other words, when using a…


Automated build of Satellite Assemblies in Visual Studio with MSBUILD

Download sample code Much has been said and written about satellite assemblies and localization techniques that are achieved using them.  I believe that most of the industry has no doubt in the usefulness of this amazing feature of the .NET Framework; however the lack of automation has made it slightly difficult for many companies to…


XML Configuration for .NET Applications

There are at least 2 options to consider for using user-specific configurations: –          Custom configuration mechanism: using technologies such as the XML Serializer. –          XML Configuration feature in .NET 2.0: This is the main topic of this blog entry. One of the great features of .NET Framework (first appearing in V2.0) has been its XML…