【发布时间】:2019-01-30 13:32:31
【问题描述】:
我们正在使用 Biztalk。为了实现一个反汇编组件,我们必须实现一个特定的接口(@987654322@),当然不使用Task作为返回类型。
另一方面,我正在使用一个 NuGet 包,它支持我们需要的很多逻辑(识别一些非常具体的文件格式),它有很多返回 Task 的方法,因此预计会是异步。
现在,我的问题是 - 在这种情况下,有什么方法可以避免必须执行可怕的异步来同步“转换”?
【问题讨论】:
-
请解释一下你所说的“转化”是什么意思,它的哪些方面让你充满了恐惧。
-
它只是不期望处理异步实现。它调用接口上的方法,当您从这些方法返回时,它期望工作已完全完成。所以是的,如果您自己的实现使用异步代码,您将不得不在代码中的某处编写一些阻塞代码。
-
实际上@Damien_The_Unbeliever 看起来您调用
Disassemble()来启动该过程,然后调用GetNext()来检索可用的结果。不是 BizTalk 专家。 -
@JohnWu - 所以,你可能会从
Disassemble的异步中稍微受益,但你仍然需要在GetNext中编写某种形式的阻塞集合来等待/选择提升每个结果。 -
感谢 cmets。如果有人过来并想要一个好的阻塞代码(不会死锁),我建议看看这个答案:stackoverflow.com/questions/40324300/…
标签: c# .net async-await