C#中的“启动并忘记”:Async/Await与旧的异步委托——哪种方法最佳?
在简化C#中“启动并忘记”调用的尝试中,开发人员在过渡到新的异步语法时可能会遇到挑战。本文探讨了旧方法和新方法之间的区别。
在旧方法中(示例代码中由“async”委托演示),一旦调用EndInvoke()方法,底层线程就会终止。BeginInvoke()方法确保线程启动,允许“启动并忘记”操作异步调用DoIt()方法。虽然这种方法有效,但它需要手动关闭异步等待句柄。
新的异步语法(由DoIt2()方法举例说明)消除了对EndInvoke()和句柄关闭的需求。但是,它引入了等待Task.Yield()的要求,这需要重写现有的异步方法以添加此占位符。
为了解决异步调用同步方法A()而不产生不必要的复杂性的问题,开发人员可以避免使用async void,并使用Task.Run(A)直接调用A()。这种方法模拟了旧的异步委托,而没有async/await的复杂性。
以上是C# 中的'即发即忘”:Async/Await 与旧的异步委托 – 哪种方法最好?的详细内容。更多信息请关注PHP中文网其他相关文章!