Ich habe in WCF gesehen, dass sie das [OperationContract(IsOneWay = true)]
Attribut haben. Aber WCF scheint langsam und schwer zu sein, nur um eine nicht blockierende Funktion zu erstellen. Idealerweise würde es so etwas wie statische Leere geben MethodFoo(){}
, die nicht blockiert , aber ich glaube nicht, dass es das gibt.
Was ist der schnellste Weg, um einen nicht blockierenden Methodenaufruf in C # zu erstellen?
Z.B
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 : Jeder, der dies liest, sollte darüber nachdenken, ob die Methode tatsächlich abgeschlossen werden soll. (Siehe Antwort Nr. 2 oben) Wenn die Methode beendet werden muss, müssen Sie an einigen Stellen, z. B. in einer ASP.NET-Anwendung, etwas tun, um den Thread zu blockieren und am Leben zu erhalten. Andernfalls könnte dies zu "Feuer-Vergessen-aber-nie-tatsächlich-Ausführen" führen. In diesem Fall wäre es natürlich einfacher, überhaupt keinen Code zu schreiben. ( Eine gute Beschreibung, wie dies in ASP.NET funktioniert )