Sign In
cbrumme's WebLog
Translate This Page
Translate this page
Powered by
Microsoft® Translator
Tags
Chat
CLR
Browse by Tags
MSDN Blogs
>
cbrumme's WebLog
>
All Tags
>
clr
Tagged Content List
Blog Post:
Updated Finalization and Hosting
cbrumme
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 posts and replaced the XXXXX markers with real text...
on
26 Apr 2004
Blog Post:
Hosting
cbrumme
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 to explain why it’s taken so long to get this...
on
21 Feb 2004
Blog Post:
Finalization
cbrumme
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 is expensive. It has the following costs...
on
20 Feb 2004
Blog Post:
Apartments and Pumping in the CLR
cbrumme
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 through my random blog articles. I’m...
on
2 Feb 2004
Blog Post:
The PDC and Application Compatibility, but still no Hosting
cbrumme
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 to talk about the deep changes we re making in...
on
10 Nov 2003
Blog Post:
The Exception Model
cbrumme
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 for other processes (i.e. your processes) to...
on
1 Oct 2003
Blog Post:
Startup, Shutdown and related matters
cbrumme
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 world. These problems occur because many...
on
20 Aug 2003
Blog Post:
TransparentProxy
cbrumme
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. (When will my dentist provide free wireless to his...
on
14 Jul 2003
Blog Post:
Reliability
cbrumme
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 transactions ( http://slashdot.org/comments...
on
23 Jun 2003
Blog Post:
AppDomains ("application domains")
cbrumme
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” deserves some explanation: A Win32 process is...
on
1 Jun 2003
Blog Post:
Memory Model
cbrumme
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 shipped. In this note, I’m talking about future directions...
on
17 May 2003
Blog Post:
Value Types
cbrumme
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 beasts, like ArgIterators and TypedByRefs. (These...
on
10 May 2003
Blog Post:
Security and Asynchrony
cbrumme
In a comment to my last ramble, about asynchronous execution and pinning, someone asked for advice on using Windows impersonation in a managed application. Unfortunately, the managed platform currently has poor abstractions and infrastructure for controlling Windows identity, and indeed for most...
on
8 May 2003
Blog Post:
Asynchronous operations, pinning
cbrumme
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 implements XXX doesn’t also offer BeginXXX and...
on
6 May 2003
Blog Post:
Interface layout
cbrumme
The CLR has two different techniques for implementing interfaces. These two techniques are exposed with distinct syntax in C#: interface I { void m(); } class C : I { public virtual void m() {} // implicit contract matching } class D : I { void I.m() {} // explicit contract matching...
on
3 May 2003
Blog Post:
Virtual and non-virtual
cbrumme
The CLR type system supports both virtual and non-virtual instance methods. And IL can contain both CALLVIRT and CALL instructions. So it makes sense that IL generators would call virtual methods using CALLVIRT and call non-virtual instance methods with CALL. In fact, this is not necessarily the...
on
25 Apr 2003
Blog Post:
Interning Strings and immutability
cbrumme
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. 1) It happens when you explicitly call System...
on
22 Apr 2003
Blog Post:
Lifetime, GC.KeepAlive, handle recycling
cbrumme
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 has some freedom to lengthen or shorten the lifetime...
on
19 Apr 2003
Blog Post:
Managed blocking
cbrumme
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 similar primitives, rather than calling out to the...
on
17 Apr 2003
Blog Post:
ReleaseComObject
cbrumme
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 unmanaged COM resource. This would allow the ...
on
16 Apr 2003
Blog Post:
Threads, fibers, stacks and address space
cbrumme
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 active in the OS process. System.Threading...
on
15 Apr 2003
Blog Post:
Initializing code
cbrumme
A common question is how to initialize code before it is called. In the unmanaged world, this is done with a DLL_PROCESS_ATTACH notification to your DllMain routine. Managed C++ can actually use this same technique. However, it has all the usual restrictions and problems related to the operating...
on
15 Apr 2003
Blog Post:
Unhandled exceptions
cbrumme
There are two kinds of threads executing inside managed code: the ones we start in managed code and the ones that wander into the CLR. The ones that started in managed code include all calls to Thread.Start(), the managed threadpool threads, and the Finalizer thread(s). For all the threads...
on
15 Apr 2003
Blog Post:
Inheriting from MarshalByRefObject
cbrumme
Developers often wonder why they are forced to derive from MarshalByRefObject or EnterpriseServices.ServicedComponent. It would be so much more convenient if they could add a CustomAttribute to their class or use a marker interface to declare that they want to be marshaled by reference or they want...
on
15 Apr 2003
Blog Post:
Managed objects and COM
cbrumme
All managed objects other than those derived from ServicedComponent, when exposed to COM, behave as if they have aggregated the free threaded marshaler (FTM). In other words, they can be called on any thread without any cross-apartment marshaling. Although managed objects act as if they aggregate...
on
15 Apr 2003
Page 1 of 2 (34 items)
1
2