Najprostszy sposób na wykonanie metody ognia i zapomnienia w C #?

Widziałem w WCF, że mają[OperationContract(IsOneWay = true)] atrybut. Ale WCF wydaje się dość powolny i ciężki, aby stworzyć funkcję nieblokującą. Idealnie byłoby coś takiego jak statyczna pustka nie blokującaMethodFoo(){}, ale nie sądzę, że istnieje.

Jaki jest najszybszy sposób utworzenia niezblokowanego wywołania metody w języku C #?

Na przykład.

<code>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");
    }
}
</code>

NB: Każdy, kto to czyta, powinien zastanowić się, czy rzeczywiście chce, aby metoda się skończyła. (Patrz # 2 najlepsza odpowiedź) Jeśli metoda ma się zakończyć, w niektórych miejscach, takich jak aplikacja ASP.NET, musisz zrobić coś, aby zablokować i utrzymać wątek przy życiu. W przeciwnym razie może to prowadzić do „fire-forget-but-never-actual-execute”, w którym to przypadku, oczywiście, łatwiej byłoby w ogóle nie pisać kodu. (Dobry opis tego, jak to działa w ASP.NET)

questionAnswers(9)

yourAnswerToTheQuestion