小编典典

在C#中最简单的方法来解决问题?

c#

我在WCF中看到它们具有[OperationContract(IsOneWay = true)]属性。但是WCF似乎只是创建一个非阻塞函数而缓慢而繁重。理想情况下,将存在诸如静态无效空间非阻塞之类的东西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中工作


阅读 272

收藏
2020-05-19

共1个答案

小编典典

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

(五年后…)

Task.Run(() => FireAway());

正如luisperezphd所指出的。

2020-05-19