0

我正在对一段代码进行一些重构,以将所有阻塞操作转换为异步操作。我的代码在 C# 中,并且正在执行 UPnP 查询,然后是 HTTP 查询。为此,我使用了 UdpClient 和 WebClient 的 APM 方法(BeginReceive 等)。

我的单一方法现在是一系列 Call_1 -> Callback_1 -> Call_2 -> Callback_2 等等。

有人可以指出一些关于在这种情况下应该给方法命名的指导方针,知道除了 Call_1 之外的所有东西都不是我的类接口的一部分。Callback_1、Call_2 等方法实际上只是取消同步工作流的副作用。你会使用什么命名法?

使用 CCR,一切都将保留在一个使用 yield 关键字的漂亮方法中,但不幸的是,我现在不会使用 CCR。

4

1 回答 1

0

为了向客户端代码表达代码的意图,我会在所有具有异步行为的方法前面加上run. 例如:runSOQueryrunDiskCheck等等。

也许愚蠢但对客户端代码更清晰fireAndForget,但不确定我是否正确理解了你的问题......

最好的方法是通过返回一个特殊的返回值来表达该方法的异步语义,例如 java.util.concurrent.Future,在 Java 的情况下或其他地方的“自制”。.

于 2009-12-10T02:59:58.023 回答