Showing results for February 2012 - Page 2 of 2 - .NET Blog

Feb 11, 2012
Post comments count0
Post likes count3

Building Async Coordination Primitives, Part 2: AsyncAutoResetEvent

Stephen Toub - MSFT
Stephen Toub - MSFT

In my last post, I discussed building an asynchronous version of a manual-reset event.  This time, we’ll build an asynchronous version of an auto-reset event.A manual-reset event is transitioned to the signaled state when requested to do so (i.e. calling Set()), and then it remains in that state until it’s manually transitioned bac...

.NET Parallel Programming
Feb 11, 2012
Post comments count9
Post likes count1

Building Async Coordination Primitives, Part 1: AsyncManualResetEvent

Stephen Toub - MSFT
Stephen Toub - MSFT

The Task-based Async Pattern (TAP) isn’t just about asynchronous operations that you initiate and then asynchronously wait for to complete.  More generally, tasks can be used to represent all sorts of happenings, enabling you to await for any matter of condition to occur.  We can even use Tasks to build simple coordination primitive...

.NET Parallel Programming
Feb 8, 2012
Post comments count0
Post likes count3

Potential pitfalls to avoid when passing around async lambdas

Stephen Toub - MSFT
Stephen Toub - MSFT

One of the really useful capabilities of the new async methods feature in C# and Visual Basic is the ability to write async lambdas and anonymous methods (from here on in this post, I’ll refer to both of these as async lambdas, since the discussion applies equally to both).  This allows you to easily get a delegate to represent an asynch...

.NET Parallel Programming
Feb 7, 2012
Post comments count0
Post likes count1

When “ExecuteSynchronously” doesn’t execute synchronously

Stephen Toub - MSFT
Stephen Toub - MSFT

When creating a task continuation with ContinueWith, developers have the opportunity to provide a TaskContinuationOptions enum value, which could include the TaskContinuationOptions.ExecuteSynchronously flag.  ExecuteSynchronously is a request for an optimization to run the continuation task on the same thread that completed the antecedent tas...

.NET Parallel Programming
Feb 6, 2012
Post comments count0
Post likes count0

FromAsync(asyncResult, …) vs FromAsync(beginMethod, …)

Stephen Toub - MSFT
Stephen Toub - MSFT

The Task Parallel Library (TPL) provides a set of “FromAsync” helper methods that create a Task or a Task<TResult> to represent an invocation of an APM method pair, i.e. BeginXx / EndXx.  There are, however, two different flavors among these overloads: ones that accept an IAsyncResult “asyncResult” as the first pa...

.NET Parallel Programming
Feb 4, 2012
Post comments count0
Post likes count2

Building a custom GetOrAdd method for ConcurrentDictionary

Stephen Toub - MSFT
Stephen Toub - MSFT

I was recently asked by a developer about getting some additional information out of ConcurrentDictionary<TKey,TValue>’s GetOrAdd method.  As a reminder, GetOrAdd either returns the value for a key currently in the dictionary, or if that key doesn’t have a value, it adds a value for the key as dictated by either a TValue prov...

.NET Parallel Programming
Feb 3, 2012
Post comments count0
Post likes count0

Know Thine Implicit Allocations

Stephen Toub - MSFT
Stephen Toub - MSFT

For .NET 4.5, we’ve invested quite a bit of effort into performance, and in particular for the Task Parallel Library (Joe Hoag wrote a good paper covering some of these improvements).  We focused such effort on TPL because it is a core component used in async programming and at a foundational level for many libraries and applications.&nb...

.NET Parallel Programming
Feb 2, 2012
Post comments count2
Post likes count1

Await, SynchronizationContext, and Console Apps: Part 3

Stephen Toub - MSFT
Stephen Toub - MSFT

In Part 1 and Part 2 of this short series, I demonstrated how you can build a SynchronizationContext and use it run an async method such that all of the continuations in that method will run on serialized on the current thread.  This can be helpful when executing async methods in a console app, or in a unit test framework that doesn’t di...

.NET Parallel Programming