Saya melihat di WCF mereka punya [OperationContract(IsOneWay = true)]
atribut. Tapi WCF tampaknya agak lambat dan berat hanya untuk membuat fungsi nonblocking. Idealnya akan ada sesuatu seperti static void nonblocking MethodFoo(){}
, tapi saya rasa itu tidak ada.
Apa cara tercepat untuk membuat panggilan metode nonblocking di C #?
Misalnya
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 : Semua orang yang membaca ini harus memikirkan apakah mereka benar-benar ingin metode ini selesai. (Lihat # 2 jawaban teratas) Jika metode ini harus selesai, maka di beberapa tempat, seperti aplikasi ASP.NET, Anda perlu melakukan sesuatu untuk memblokir dan menjaga utas tetap hidup. Kalau tidak, ini bisa mengarah pada "fire-forget-but-never-sebenarnya-execute", dalam hal ini, tentu saja, akan lebih mudah untuk menulis tanpa kode sama sekali. ( Deskripsi yang baik tentang cara kerjanya di ASP.NET )