在C#中使用单个语句异步的最简单方法是什么?

Lar*_*nal 1 .net c# asp.net asynchronous

我有一个在ASP.NET页面上运行的语句需要很长时间(很长一段时间我的意思是100毫秒,如果我希望这个页面快速闪亮,这个时间太长了),我不关心它什么时候执行只要执行.

实现这一目标的最佳(也是最简单)方法是什么?

Jon*_*eet 8

最简单的方法可能是让它在线程池中执行.例如,要使这个异步:

使用系统; 使用System.Threading;

class Test
{
    static void ExecuteLongRunningTask()
    {
        Console.WriteLine("Sleeping...");
        Thread.Sleep(1000);
        Console.WriteLine("... done");
    }

    static void Main()
    {
        ExecuteLongRunningTask();
        Console.WriteLine("Finished");
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

将第一行更改Main为:

ThreadPool.QueueUserWorkItem(x => ExecuteLongRunningTask());
Run Code Online (Sandbox Code Playgroud)

请注意,如果您传入任何参数,它们将被捕获变量 - 在某些情况下可能会产生微妙的副作用(特别是如果您在循环中使用它).