在C#中执行fire and forget方法的最简单方法是什么?

在C#中执行fire and forget方法的最简单方法是什么?

我在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中的工作原理


慕桂英4014372
浏览 829回答 3
3回答

慕运维8079593

对于C#4.0及更新版本,让我觉得Ade Miller现在给出了最好的答案:在c#4.0中执行fire and forget方法的最简单方法Task.Factory.StartNew(() => FireAway());甚至...Task.Factory.StartNew(FireAway);要么...new Task(FireAway).Start();哪里FireAway是public static void FireAway(){     // Blah...}因此,凭借类和方法名称的简洁性,这取决于您选择的那个,使得线程池版本超过6到19个字符:)ThreadPool.QueueUserWorkItem(o => FireAway());
打开App,查看更多内容
随时随地看视频慕课网APP