【发布时间】:2013-11-05 21:37:53
【问题描述】:
我正在使用一个自定义框架,该框架在我的公司内使用了很长时间。 我想在我的代码中使用新的异步功能。
为了做到这一点,我必须将“MyClass”的“ProcessRequestMessage”标记为异步。 我无法更改接口“IFramework”和类“FrameworkBase”。
框架已经期望“ProcessRequestMessage”异步完成,所以我不必在方法结束时使用“Wait()”。 对“SetResponseCode”的调用向框架发出信号以完成“MyClass”的实例
问题: 我在异步功能的文档中读到,只有 void 事件应该被标记为异步以进入异步工作流(任务不适用于此处)。我的代码要求我将 void 接口方法的实现标记为入口点。
我可以这样做吗:
interface IFramework
{
void ProcessRequestMessage()
void SetResponseCode(int code)
}
public abstract class FrameworkBase: IFramework
{
abstract void ProcessRequestMessage()
public void SetResponseCode(int code)
{
//internal implementation
}
}
public class MyClass: FrameworkBase
{
protected override async void ProcessRequestMessage()
{
//await something
SetResponseCode(0);
}
}
【问题讨论】:
标签: c# asynchronous async-await c#-5.0