यह "बिना किसी प्रतीक्षा के C # में एक Async विधि को सुरक्षित रूप से कॉल करने का तरीका" का डुप्लिकेट नहीं है ।
मैं निम्नलिखित चेतावनी को अच्छी तरह से कैसे दबाऊं?
चेतावनी CS4014: क्योंकि यह कॉल प्रतीक्षित नहीं है, कॉल पूरा होने से पहले वर्तमान पद्धति का निष्पादन जारी है। कॉल के परिणाम के लिए 'प्रतीक्षा' ऑपरेटर को लागू करने पर विचार करें।
एक सरल उदाहरण:
static async Task WorkAsync()
{
await Task.Delay(1000);
Console.WriteLine("Done!");
}
static async Task StartWorkAsync()
{
WorkAsync(); // I want fire-and-forget
// more unrelated async/await stuff here, e.g.:
// ...
await Task.Delay(2000);
}
मैंने क्या कोशिश की और क्या पसंद नहीं आया:
static async Task StartWorkAsync()
{
#pragma warning disable 4014
WorkAsync(); // I want fire-and-forget here
#pragma warning restore 4014
// ...
}
static async Task StartWorkAsync()
{
var ignoreMe = WorkAsync(); // I want fire-and-forget here
// ...
}
अपडेट किया गया , चूंकि मूल स्वीकार किए गए उत्तर को संपादित किया गया है, इसलिए मैंने C # 7.0 डिस्क्स का उपयोग करके स्वीकार किए गए उत्तर को बदल दिया है , क्योंकि मुझे नहीं लगता कि ContinueWith
यह उपयुक्त है। जब भी मुझे आग-और-भूल संचालन के लिए अपवादों को लॉग करने की आवश्यकता होती है, मैं स्टीफन क्लीरी द्वारा प्रस्तावित अधिक विस्तृत दृष्टिकोण का उपयोग करता हूं ।
async void
सहायक विधि के माध्यम से ।
#pragma
है कि अच्छा नहीं है?