Widziałem w WCF, że mają [OperationContract(IsOneWay = true)]
atrybut. Jednak funkcja WCF wydaje się być powolna i ciężka, aby utworzyć funkcję nieblokującą. Idealnie byłoby coś takiego jak nieblokująca się statyczna pustkaMethodFoo(){}
, ale nie sądzę, że istnieje.
Jaki jest najszybszy sposób utworzenia wywołania metody nieblokującej 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 pomyśleć o tym, czy rzeczywiście chce, aby metoda została zakończona. (Zobacz pierwszą odpowiedź nr 2) Jeśli metoda musi się zakończyć, w niektórych miejscach, takich jak aplikacja ASP.NET, będziesz musiał zrobić coś, aby zablokować i utrzymać wątek przy życiu. W przeciwnym razie mogłoby to doprowadzić do „odpalenia-zapomnienia-ale-nigdy-nie-wykonania-wykonania”, w którym to przypadku oczywiście łatwiej byłoby napisać w ogóle żaden kod. ( Dobry opis tego, jak to działa w ASP.NET )