【问题标题】:Must adhere to an interface that doesn't return Task - must use async library必须遵守不返回任务的接口 - 必须使用异步库
【发布时间】:2019-01-30 13:32:31
【问题描述】:

我们正在使用 Biztalk。为了实现一个反汇编组件,我们必须实现一个特定的接口(@98​​7654322@),当然不使用Task作为返回类型。

另一方面,我正在使用一个 NuGet 包,它支持我们需要的很多逻辑(识别一些非常具体的文件格式),它有很多返回 Task 的方法,因此预计会是异步。

现在,我的问题是 - 在这种情况下,有什么方法可以避免必须执行可怕的异步来同步“转换”?

【问题讨论】:

  • 请解释一下你所说的“转化”是什么意思,它的哪些方面让你充满了恐惧。
  • 它只是不期望处理异步实现。它调用接口上的方法,当您从这些方法返回时,它期望工作已完全完成。所以是的,如果您自己的实现使用异步代码,您将不得不在代码中的某处编写一些阻塞代码。
  • 实际上@Damien_The_Unbeliever 看起来您调用Disassemble() 来启动该过程,然后调用GetNext() 来检索可用的结果。不是 BizTalk 专家。
  • @JohnWu - 所以,你可能会从Disassemble 的异步中稍微受益,但你仍然需要在GetNext 中编写某种形式的阻塞集合来等待/选择提升每个结果。
  • 感谢 cmets。如果有人过来并想要一个好的阻塞代码(不会死锁),我建议看看这个答案:stackoverflow.com/questions/40324300/…

标签: c# .net async-await


【解决方案1】:

使用Flat File Wizard 为每种格式生成特定的架构,或者为所有格式创建一个架构(如果它们非常相似)。在最后一个选项中,您可以提升将充当消息类型的属性,以便您可以使用它来基于该属性路由消息。

【讨论】:

    猜你喜欢
    • 2018-10-02
    • 2023-01-20
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 2016-10-20
    相关资源
    最近更新 更多