Я видел в 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)