J'ai vu dans WCF qu'ils ont l' [OperationContract(IsOneWay = true)]
attribut. Mais WCF semble un peu lent et lourd juste pour créer une fonction non bloquante. Idéalement, il y aurait quelque chose comme un vide statique non bloquant 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 liront ceci devraient se demander s'ils veulent réellement que la méthode se termine. (Voir la réponse principale n ° 2) Si la méthode doit se terminer, dans certains endroits, comme une application ASP.NET, vous devrez faire quelque chose pour bloquer et maintenir le thread en vie. Sinon, cela pourrait conduire à "feu-oubliez-mais-ne-exécutez jamais-réellement", auquel cas, bien sûr, il serait plus simple d'écrire aucun code. ( Une bonne description de la façon dont cela fonctionne dans ASP.NET )