参见英文答案 >
How to call asynchronous method from synchronous method in C#? 13个
为了更清楚,我引用了一个以前不是异步的工厂方法.在最近的API升级中,他们使旧方法过时并创建了一个新的异步方法.现在,我们的代码库最初来自VS2010,当时async尚不存在.我想将方法调用更改为新版本,以便我们不会抛出弃用警告.
为了更清楚,我引用了一个以前不是异步的工厂方法.在最近的API升级中,他们使旧方法过时并创建了一个新的异步方法.现在,我们的代码库最初来自VS2010,当时async尚不存在.我想将方法调用更改为新版本,以便我们不会抛出弃用警告.
现在解决问题:对异步方法的任何调用似乎都需要“等待”以保证方法实际完成,并且在该方法中初始化的任何状态数据都可用于后续操作.但是,在调用中放置“await”要求调用方法也是异步的,然后要求该方法的调用者也使用await,依此类推,直到调用堆栈的顶部.我发现避免这种情况的唯一方法是在void async方法中调用异步工厂方法.但是,Microsoft已明确声明该功能仅适用于事件处理程序,否则应避免使用.
现在,我可以调整调用堆栈中的每个函数.但这不仅令人恼火,而且也是一种极端的封装违规行为.为什么顶级类必须更改其方法头只是因为某些调用27层的函数必须处理外部API更改?我怀疑我错过了一些非常明显的东西,但从它的外观来看,我有两个选择:更改所有方法标题或提交“糟糕的编程习惯”.还有另外一种方法吗?提前感谢任何输入.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。