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