小编典典

在 C# 中执行火灾和忘记方法的最简单方法?

all

我在 WCF 中看到它们具有该[OperationContract(IsOneWay = true)]属性。但是 WCF
似乎有点缓慢和沉重,只是为了创建一个非阻塞函数。理想情况下会有类似 static void nonblocking
的东西MethodFoo(){},但我认为不存在。

在 C# 中创建非阻塞方法调用的最快方法是什么?

例如

class Foo
{
    static void Main()
    {
        FireAway(); //No callback, just go away
        Console.WriteLine("Happens immediately");
    }

    static void FireAway()
    {
        System.Threading.Thread.Sleep(5000);
        Console.WriteLine("5 seconds later");
    }
}

注意 :阅读本文的每个人都应该考虑他们是否真的希望该方法完成。(请参阅#2 最佳答案)如果该方法必须完成,那么在某些地方,例如 ASP.NET
应用程序,您将需要做一些事情来阻止并保持线程处于活动状态。否则,这可能会导致“忘记但从不实际执行”,在这种情况下,当然,根本不编写代码会更简单。(很好地描述了它在
ASP.NET 中的工作原理


阅读 54

收藏
2022-08-19

共1个答案

小编典典

ThreadPool.QueueUserWorkItem(o => FireAway());

(五年后…)

Task.Run(() => FireAway());
2022-08-19