转载:async和await这些玩意的入门

http://blog.stephencleary.com/2012/02/async-and-await.html

严格来说,这篇文章不是专门讲TAP入门的,而是讲微软是如何引入了
async和await关键字来实现程序组织的新模式,也就是编译器通过awaiter把你的代码从新‘’异步‘’组织了一下。然后系统级别支持这种async方法的caller有桌面UI, asp.net的request handler线程等(它们都有SynchronizationContext, 用于后台处理完这个async方法后回到原caller线程)。
async方法一般返回Task或Task<T>, 或者确定不用被上一层await时,也可以返回void, 没有return, 这和返回Task是一样的。
至于Task的实现,还是看源代码比较好。

威尔逊云室的一些知识

这里是基本的介绍。基本原理是利用的是降温后本来饱和的蒸汽气体一定会过饱和(因为温度降低,蒸汽更容易液化,高温则气化)

实际上,以现在的条件,没有必要用什么活塞来降温,可以使用干冰(二氧化碳),蒸汽可以使用酒精蒸汽(易挥发充满空间)。这样就很容易制造出云室了。
参见:这里

转载:executioncontext-vs-synchronizationcontext

http://blogs.msdn.com/b/pfxteam/archive/2012/06/15/executioncontext-vs-synchronizationcontext.aspx?Redirected=true

果然如其所说,System.Threading.ExecutionContext有两个Run方法。
调用await关键字实际上就是用ThreadpoolTaskScheduler, 内部的方法实际都是用ignoreSyncContext那个参数的Run
// System.Threading._ThreadPoolWaitCallback
[SecurityCritical]
internal static void PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack)
{
if (tpWaitCallBack._executionContext == null)
{
WaitCallback waitCallback = tpWaitCallBack._waitCallback;
waitCallback(tpWaitCallBack._state);
return;
}
ExecutionContext.Run(tpWaitCallBack._executionContext, _ThreadPoolWaitCallback._ccb, tpWaitCallBack, true);
}
除了这个,另一个用了ExecutionContext却没有传递SynchronizationContext的例子见这里。即DispatcherOperation的Invoke也存在对SyncCtx的特殊对待。