【发布时间】:2015-04-06 17:45:06
【问题描述】:
我有一个从某个地方调用的 Web API 函数,但在其中,我有一个需要委托的服务,专门用于完成和错误(尽管它们是示例。
public async Task<HttpResponseMessage> MyApiFuncAsync()
{
SomeService s = new Service();
HttpResponseMessage responseMessage;
EventHandler completeEventHandler = (info) => {
responseMessage = Request.CreateResponse(HttpStatusCode.OK);
};
EventHandler errorEventHandler = (error) =>{
responseMessage = Request.CreateErrorResponse(HttpStatusCode.BadRequest);
};
s.Complete += completeEventHandler;
s.Error += errorEventHandler;
try
{
await s.PerformService();
}
finally
{
s.Complete -= completeEventHandler;
s.Error -= errorEventHandler;
}
return responseMessage;
}
我以前没有这样做过,如果我的外部函数在桌面/控制台应用程序中,它的工作方式可能会有所不同。
我知道await s.PerformService() 行会一直放在那里,直到其中一个事件处理程序被触发。所以到那时,responseMessage 已经被设置为正确的响应。不过,我在想,我最终可能会返回 null,因为它可能与我试图在这些事件处理程序中设置的变量不同。
我应该如何重构这个函数?
【问题讨论】:
标签: c# function events asp.net-web-api delegates