• cbrumme's WebLog

    Apartments and Pumping in the CLR

    I’ve already written the much-delayed blog on Hosting, but I can’t post it yet because it mentions a couple of new Whidbey features, which weren’t present in the PDC bits. Obviously Microsoft doesn’t want to make product disclosures...
  • cbrumme's WebLog

    The Exception Model

    I had hoped this article would be on changes to the next version of the CLR which allow it to be hosted inside SQL Server and other “challenging” environments. This is more generally interesting than you might think, because it creates an opportunity...
  • cbrumme's WebLog


    Earlier this week, I wrote an internal email explaining how Finalization works in V1 / V1.1, and how it has been changed for Whidbey. There’s some information here that folks outside of Microsoft might be interested in. Costs Finalization...
  • cbrumme's WebLog

    AppDomains ("application domains")

    An AppDomain is a light-weight process. Well, if you actually measure the costs associated with an AppDomain – especially the first one you create, which has some additional costs that are amortized over all subsequent ones – then “light-weight”...
  • cbrumme's WebLog


    One of the recurring requests for a blog is related to TransparentProxy, RealProxy, Contexts, Interception, etc. As usual, I’m typing this where I don’t have access to our corporate network and the sources, so some details might be a little off. ...
  • cbrumme's WebLog

    Startup, Shutdown and related matters

    Usually I write blog articles on topics that people request via email or comments on other blogs. Well, nobody has ever asked me to write anything about shutdown. But then I look at all the problems that occur during process shutdown in the unmanaged...
  • cbrumme's WebLog


    Hosting My prior three blogs were supposed to be on Hosting. Each time I got side tracked, first on Exceptions, then on Application Compatibility and finally on Finalization. I refuse to be side tracked this time… much. Also, I need...
  • cbrumme's WebLog


    Developers who are accustomed to the IDisposable pattern or to C#’s ‘using’ syntax sometimes ask why COM Interop doesn’t support IDisposable on every Runtime Callable Wrapper (RCW). That way, managed code could indicate that it is finished using the...
  • cbrumme's WebLog

    Memory Model

    One of the suggestions for a blog entry was the managed memory model. This is timely, because we’ve just been revising our overall approach to this confusing topic. For the most part, I write about product decisions that have already been made and...
  • cbrumme's WebLog

    The PDC and Application Compatibility, but still no Hosting

    The PDC has happened, which means two things.   I can post some of my (slightly self-censored) reactions to the show, and I can talk about what we ve disclosed about Whidbey and Longhorn more freely.   In this particular case, I had promised...
  • cbrumme's WebLog

    Updated Finalization and Hosting

    My original posts on Finalization and Hosting had some hokey XXXXX markers in place of content, where that content hadn't already been disclosed in some form. Now that the Visual Studio 2005 Community Preview is available, I've gone back to those two...
  • cbrumme's WebLog

    Lifetime, GC.KeepAlive, handle recycling

    It’s not possible to state exactly when a managed object will be collected. The garbage collector schedules itself based on various heuristics. Even if a garbage collection occurs, it may only collect the younger generations of the heap. And the JIT...
  • cbrumme's WebLog

    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 we lay these things out. For example, on some systems we might align and pack differently. For this to happen, you need to specify tdAutoLayout for...
  • cbrumme's WebLog


    I’ve been putting off writing this blog, not just because I’m on vacation in Maui and have far more tempting things to do. It’s because one of my blogs has already been used on Slashdot as evidence that Windows cannot scale and won’t support distributed...
  • cbrumme's WebLog

    Access to old blogs

    By default, old blogs are truncated from this web site.  If you want to read old entries that have scrolled off, go to the CATEGORIES section at the right hand side of the web page.  Select CLR (rss) and you'll see the full list.
  • cbrumme's WebLog

    Asynchronous operations, pinning

    One thing we tried to do with the CLR and FX is provide a consistent asynchronous programming model. To briefly recap the model, an API called XXX may also offer an async alternative composed of BeginXXX and EndXXX methods. Even if the class that...
  • cbrumme's WebLog

    A quick update on me.

    It’s been over two years since I blogged. Although I remain happily (perhaps even ecstatically) working at Microsoft, I left the CLR team and the Developer Division about a year ago. I’m now on an incubation team, exploring evolution and revolution in...
  • cbrumme's WebLog

    Interning Strings and immutability

    Managed strings are subject to ‘interning’. This is the process where the system notices that the same string is used in several places, so it can fold all the references to the same unique instance. Interning happens two ways in the CLR. ...
  • cbrumme's WebLog

    What is SEHException?

    One way you get this exception is if unmanaged code does an OS RaiseException() or causes a fault. If that exception is propagated up the stack to managed code, we will try to map it to a managed exception. For example, STATUS_NO_MEMORY maps to OutOfMemoryException...
  • cbrumme's WebLog

    Managed blocking

    What’s the difference between WaitHandle.WaitOne/WaitAny/WaitAll and just PInvoke’ing to WaitForSingleObject or WaitForMultipleObjects directly? Plenty. There are several reasons why we prefer you to use managed blocking through WaitHandle or ...
  • cbrumme's WebLog

    Error C0020001

    #define BOOTUP_EXCEPTION_COMPLUS 0xC0020001 You may see an exception with this code, or an HRESULT of this value, when trying to call into managed code. This can happen if you call in before the runtime has finished initializing, or after the ...
  • cbrumme's WebLog

    Infrequent blogging

    Just a quick explanation for why there hasn't been a new blog lately. I'm partway through a 3.5 week vacation on Maui. I have wireless & broadband out by the pool, but I can't seem to find the time to blog. Things will return to normal by mid-July...
  • cbrumme's WebLog

    Threads, fibers, stacks and address space

    Every so often, someone tries to navigate from a managed System.Threading.Thread object to the corresponding ThreadId used by the operating system. System.Diagnostic.ProcessThread exposes the Windows notion of threads. In other words, the OS threads...
  • cbrumme's WebLog

    Access to old blogs

    By default, old blogs are truncated from this web site. If you want to read old entries that have scrolled off, go to the CATEGORIES section at the right hand side of the web page. Select CLR (rss) and you'll see the full list.
  • cbrumme's WebLog

    Value Types

    The CLR’s type system includes primitive types like signed and unsigned integers of various sizes, booleans and floating point types. It also includes partial support for types like pointers and function pointers. And it contains some rather exotic...
Page 1 of 2 (39 items) 12