9
หากอินเทอร์เฟซของฉันต้องส่งคืนงานเป็นวิธีที่ดีที่สุดในการปรับใช้งานที่ไม่ดำเนินการอย่างไร
ในโค้ดด้านล่างเนื่องจากอินเทอร์เฟซคลาสLazyBarจะต้องส่งคืนภารกิจจากเมธอดของมัน (และสำหรับเหตุผลที่ไม่สามารถเปลี่ยนแปลงได้) หากLazyBarการติดตั้งใช้งานผิดปกติเกิดขึ้นกับการทำงานที่รวดเร็วและพร้อมกัน - วิธีใดที่ดีที่สุดในการส่งคืนภารกิจที่ไม่มีการดำเนินการจากเมธอด? ฉันได้ไปTask.Delay(0)ข้างล่างนี้ แต่ฉันอยากจะรู้ว่าสิ่งนี้มีผลข้างเคียงของการทำงานหรือไม่ถ้าฟังก์ชั่นนี้มีการเรียกใช้มาก (เพื่อประโยชน์ในการโต้แย้งพูดหลายร้อยครั้งต่อวินาที): น้ำตาลซินแทติกติกนี้ไม่ทำให้ลมออกมาเป็นเรื่องใหญ่หรือไม่? มันเริ่มอุดตันกลุ่มแอปพลิเคชันของฉันหรือไม่ คอมไพเลอร์มีดเพียงพอที่จะจัดการกับDelay(0)แตกต่างกันหรือไม่? จะreturn Task.Run(() => { });แตกต่างกันอย่างไร มีวิธีที่ดีกว่า? using System.Threading.Tasks; namespace MyAsyncTest { internal interface IFooFace { Task WillBeLongRunningAsyncInTheMajorityOfImplementations(); } /// <summary> /// An implementation, that unlike most cases, will not have a long-running /// operation in 'WillBeLongRunningAsyncInTheMajorityOfImplementations' /// </summary> internal …