Eu vi no WCF eles terem o [OperationContract(IsOneWay = true)]
atributo Mas o WCF parece meio lento e pesado, apenas para criar uma função sem bloqueio. Idealmente, haveria algo como non-blocking estático MethodFoo(){}
, mas acho que não existe.
Qual é a maneira mais rápida de criar uma chamada de método sem bloqueio em C #?
Por exemplo
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 : Todo mundo que lê isso deve pensar se realmente deseja que o método termine. (Consulte a segunda resposta principal) Se o método precisar terminar, em alguns lugares, como um aplicativo ASP.NET, você precisará fazer algo para bloquear e manter o thread ativo. Caso contrário, isso poderia levar a "ignorar, mas nunca executar de fato"; nesse caso, é claro, seria mais simples escrever nenhum código. ( Uma boa descrição de como isso funciona no ASP.NET )