В WCF я видел атрибут [OperationContract(IsOneWay = true)]
. Но WCF кажется медленным и тяжелым, чтобы создать неблокирующую функцию. В идеале было бы что-то вроде статического void nonblocking MethodFoo(){}
, но я не думаю, что это существует.
Каков самый быстрый способ создания вызова неблокирующего метода в С#?
например.
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. Все, кто читает это, должны подумать о том, хотят ли они на самом деле закончить этот метод. (См. Верхний ответ # 2). Если метод должен закончить, то в некоторых местах, например, в приложении ASP.NET, вам нужно будет что-то сделать, чтобы заблокировать и сохранить поток в живых. В противном случае это может привести к "огню-забыть-но-никогда-фактически-выполнить", и в этом случае, конечно, было бы проще вообще писать код. (Хорошее описание того, как это работает в ASP.NET)