我正在对一段代码进行一些重构,以将所有阻塞操作转换为异步对应操作。我的代码在C#中,正在执行UPnP查询,然后是HTTP查询。为此,我使用了UdpClient和WebClient的APM方法(BeginReceive等)。
我的单一方法现在是Call_1的继承 - > Callback_1 - > Call_2 - > Callback_2等等。
有人可以指出我应该在这种情况下给出方法的名称的一些指导,知道除了Call_1之外的所有东西都不是我的类接口的一部分。 Callback_1,Call_2等方法实际上只是使工作流失步的副作用。你会用什么命名法?
使用CCR,一切都会使用yield关键字保留在一个漂亮的方法中,但不幸的是,我现在不会使用CCR。
答案 0 :(得分:0)
要向客户端代码表达代码的意图,我将为所有与run
具有异步行为的方法添加前缀。例如:runSOQuery
,runDiskCheck
等。
也许是愚蠢但更清楚的客户端代码可能是fireAndForget
,但不确定我是否正确理解了您的问题......
最好的方法是通过返回一个特殊的返回值来表达方法的异步语义,就像java.util.concurrent.Future一样,对于Java或者“自制”的东西,别处。 。