MBW Blog

醉后不知天在水, 满船清梦压星河

Task-基本实现原理

前言

C#中的异步编程是一种处理长时间运行任务的方式,可以避免阻塞主线程,从而提升应用程序的响应性和性能。异步也可以使回调的写法更加简单明了和线性化, 可以避免嵌套多层的"回调地狱"。本文主要介绍异步背后的一些基本实现原理。

Lambda表达式-避免GC的产生

问题背景

在c#中使用Lambda表达式是很常见的,但是某些情形下Lambda表达可能导致大量的GC产生, 怎么在c#正确的使用Lambda表达式以避免产生过多的GC呢?

案例1

没有捕获任何外部变量
1
2
3
4
5
6
7
public class LambdaTest
{
    public void Foo()
    {
        Func<int, int> func = (x) => x + 1;
    }
}

编译生成的IL等效c#代码