นี้ไม่ซ้ำกับ"วิธีการได้อย่างปลอดภัยเรียกวิธี async ใน C # โดยไม่ต้องรอคอย"
ฉันจะระงับคำเตือนต่อไปนี้ได้อย่างไร?
คำเตือน 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
เหมาะสม เมื่อใดก็ตามที่ผมต้องเข้าสู่ระบบข้อยกเว้นสำหรับไฟและลืมการดำเนินงานของผมใช้วิธีการที่ซับซ้อนมากขึ้นที่เสนอโดยสตีเฟ่นเคลียร์ที่นี่
#pragma
ไม่ดีเหรอ?