Ho visto in WCF che hanno l' [OperationContract(IsOneWay = true)]
attributo. Ma WCF sembra un po 'lento e pesante solo per creare una funzione non bloccante. Idealmente ci sarebbe qualcosa di simile al vuoto statico senza blocco MethodFoo(){}
, ma non credo che esista.
Qual è il modo più rapido per creare una chiamata di metodo non bloccante in C #?
Per esempio
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 : Chiunque legga questo dovrebbe pensare se vogliono davvero che il metodo finisca. (Vedi risposta principale n. 2) Se il metodo deve terminare, in alcuni casi, come un'applicazione ASP.NET, dovrai fare qualcosa per bloccare e mantenere attivo il thread. Altrimenti, questo potrebbe portare a "fuoco-dimentica-ma-mai-effettivamente-esegui", nel qual caso, ovviamente, sarebbe più semplice non scrivere alcun codice. ( Una buona descrizione di come funziona in ASP.NET )