J'ai vu dans WCF ils ont le [OperationContract(IsOneWay = true)]
l'attribut. Mais WCF semble un peu lent et lourd juste pour faire créer une fonction non bloquante. Idéalement il y aurait quelque chose comme static void nonblocking MethodFoo(){}
mais je ne pense pas que cela existe.
Quel est le moyen le plus rapide de créer un appel de méthode non bloquant en C# ?
Par exemple
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 : Tous ceux qui lisent ceci devraient réfléchir pour savoir s'ils veulent réellement que la méthode se termine. (Si la méthode doit se terminer, alors dans certains endroits, comme une application ASP.NET, vous devrez faire quelque chose pour bloquer et garder le fil en vie. Dans le cas contraire, cela pourrait conduire à une situation de "feu-forget-mais-ne-jamais-exécuter-au-fait", auquel cas, bien sûr, il serait plus simple de ne pas écrire de code du tout. ( Une bonne description de la façon dont cela fonctionne en ASP.NET )