c# – 在using语句中调用异步方法

c# – 在using语句中调用异步方法,第1张

概述我想使用异步调用发送消息,但在此过程中使用了可用资源.我不确定如何正确处理这个问题. using(IDisposable disposeMe = new DisposableThing()){ MethodAsync(disposeMe);} 任何想法如何做到这一点.异步方法没有任何回调. 编辑: 基于@Servy接受的答案的建议.实施改为: public async Task Met 我想使用异步调用发送消息,但在此过程中使用了可用资源.我不确定如何正确处理这个问题.
using(Idisposable disposeMe = new disposableThing()){    MethodAsync(disposeMe);}

任何想法如何做到这一点.异步方法没有任何回调.

编辑:

基于@Servy接受的答案的建议.实施改为:

public async Task Method(){    using(Idisposable disposeMe = new disposableThing())    {        await MethodAsync(disposeMe);    }}
解决方法

The async method does not have any callback

那是一个问题.一个非常大的问题.如果可能的话你应该解决这个问题;除非有充分的理由不这样做,否则所有异步方法都应该为调用者提供一些方法来知道它们何时完成,是否为回调,返回任务,触发事件等.对于异步方法而言,这尤其令人不安.依赖于一次性资源来做到这一点.

如果在 *** 作完成时确实无法通知,则在方法完成后无法调用dispose.确保在异步 *** 作仍然需要时不要处理资源的唯一方法是泄漏资源而不是完全丢弃它.如果一次性资源有一个终结器,它最终可能会被清理掉,但并非所有的一次性资源都这样做.

如果你可以以某种方式修改异步方法,那么你只需要在回调中,或在任务的延续中,或在相关事件的处理程序中调用dispose.除非你可以等待异步 *** 作,否则你将无法使用use(因为等待就像那样令人敬畏).

总结

以上是内存溢出为你收集整理的c# – 在using语句中调用异步方法全部内容,希望文章能够帮你解决c# – 在using语句中调用异步方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1250029.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存