cbrumme's WebLog

A quick update on me.

It’s been over two years since I blogged.  Although I remain happily (perhaps even ecstatically)...

Author: cbrumme Date: 09/15/2006

Updated Finalization and Hosting

My original posts on Finalization and Hosting had some hokey XXXXX markers in place of content,...

Author: cbrumme Date: 04/26/2004

Apartments and Pumping in the CLR

I’ve already written the much-delayed blog on Hosting, but I can’t post it yet because...

Author: cbrumme Date: 02/02/2004

Access to old blogs

By default, old blogs are truncated from this web site. If you want to read old entries that have...

Author: cbrumme Date: 11/10/2003

The Exception Model

I had hoped this article would be on changes to the next version of the CLR which allow it to be...

Author: cbrumme Date: 10/01/2003

Reliability

I’ve been putting off writing this blog, not just because I’m on vacation in Maui and have far more...

Author: cbrumme Date: 06/23/2003

Infrequent blogging

Just a quick explanation for why there hasn't been a new blog lately.  I'm partway through a 3.5...

Author: cbrumme Date: 06/16/2003

Access to old blogs

By default, old blogs are truncated from this web site. If you want to read old entries that have...

Author: cbrumme Date: 05/18/2003

Memory Model

One of the suggestions for a blog entry was the managed memory model. This is timely, because we’ve...

Author: cbrumme Date: 05/17/2003

Value Types

The CLR’s type system includes primitive types like signed and unsigned integers of various sizes,...

Author: cbrumme Date: 05/10/2003

Request a topic

If there's a topic related to the CLR, feel free to drop me a line asking me to talk about it.  I...

Author: cbrumme Date: 05/08/2003

Security and Asynchrony

In a comment to my last ramble, about asynchronous execution and pinning, someone asked for advice...

Author: cbrumme Date: 05/08/2003

Asynchronous operations, pinning

One thing we tried to do with the CLR and FX is provide a consistent asynchronous programming model....

Author: cbrumme Date: 05/06/2003

Interface layout

The CLR has two different techniques for implementing interfaces. These two techniques are exposed...

Author: cbrumme Date: 05/03/2003

Virtual and non-virtual

The CLR type system supports both virtual and non-virtual instance methods.  And IL can contain both...

Author: cbrumme Date: 04/25/2003

Interning Strings and immutability

Managed strings are subject to ‘interning’. This is the process where the system notices that the...

Author: cbrumme Date: 04/22/2003

Lifetime, GC.KeepAlive, handle recycling

It’s not possible to state exactly when a managed object will be collected. The garbage collector...

Author: cbrumme Date: 04/19/2003

Managed blocking

What’s the difference between WaitHandle.WaitOne/WaitAny/WaitAll and just PInvoke’ing to...

Author: cbrumme Date: 04/17/2003

ReleaseComObject

Developers who are accustomed to the IDisposable pattern or to C#’s ‘using’ syntax sometimes ask why...

Author: cbrumme Date: 04/16/2003

Threads, fibers, stacks and address space

Every so often, someone tries to navigate from a managed System.Threading.Thread object to the...

Author: cbrumme Date: 04/15/2003

Initializing code

A common question is how to initialize code before it is called. In the unmanaged world, this is...

Author: cbrumme Date: 04/15/2003

Unhandled exceptions

There are two kinds of threads executing inside managed code:  the ones we start in managed code and...

Author: cbrumme Date: 04/15/2003

Inheriting from MarshalByRefObject

Developers often wonder why they are forced to derive from MarshalByRefObject or...

Author: cbrumme Date: 04/15/2003

Managed objects and COM

All managed objects other than those derived from ServicedComponent, when exposed to COM, behave as...

Author: cbrumme Date: 04/15/2003

Why don't metaobjects marshal by reference?

Objects that derive from MarshalByRefObject will marshal by reference rather than value. Metaobjects...

Author: cbrumme Date: 04/15/2003

Surprising 'protected' behavior

There’s a subtle but important difference between protected access in unmanaged C++ and protected...

Author: cbrumme Date: 04/15/2003

What is SEHException?

One way you get this exception is if unmanaged code does an OS RaiseException() or causes a fault....

Author: cbrumme Date: 04/15/2003

Size of a managed object

We don't expose the managed size of objects because we want to reserve the ability to change the way...

Author: cbrumme Date: 04/15/2003

DLL exports

People often ask how they can expose traditional DLL exports from managed assemblies. Managed C++...

Author: cbrumme Date: 04/15/2003

Hyper threading

If the operating system schedules multiple threads against a hyper-threaded CPU, the CLR...

Author: cbrumme Date: 04/15/2003

Turning off the garbage collector

It is not generally possible to turn off garbage collection. However, the garbage collector won’t...

Author: cbrumme Date: 04/15/2003

Error C0020001

#define BOOTUP_EXCEPTION_COMPLUS 0xC0020001 You may see an exception with this code, or an HRESULT...

Author: cbrumme Date: 04/15/2003

Static Fields

By default, static fields are scoped to AppDomains. In other words, each AppDomain gets its own copy...

Author: cbrumme Date: 04/15/2003