我正在尝试在MSDN.com上关注异步控制器的示例。我有一些问题。这是一个写的链接: http://msdn.microsoft.com/en-us/library/ee728598%28VS.100%29.aspx
以下是我所指的代码:
public class PortalController : AsyncController {
public void NewsAsync(string city) {
AsyncManager.OutstandingOperations.Increment();
NewsService newsService = new NewsService();
newsService.GetHeadlinesCompleted += (sender, e) =>
{
AsyncManager.Parameters["headlines"] = e.Value;
AsyncManager.OutstandingOperations.Decrement();
};
newsService.GetHeadlinesAsync(city);
}
public ActionResult NewsCompleted(string[] headlines) {
return View("News", new ViewStringModel
{
NewsHeadlines = headlines
});
}
}
我的第一个问题是:我的服务中是否还有多种方法?例如,我在控制器中使用了名为abc的方法,并创建了两个名为abcAsync和abcCompleted的新方法。我必须在我的服务中做类似的事情吗?根据示例,它看起来像这样,但MSDN示例没有说明修改我的服务。
接下来的问题,如果我的服务需要多个参数,那么这种语法会是什么样的?
感谢您的帮助。
答案 0 :(得分:0)
我的服务中是否还必须有多种方法?
这取决于服务的含义。例如,如果您有使用svcutil.exe导入的Web服务,则可以指定/async
开关,该开关将在生成代理时为所有方法生成同步和异步方法签名。在服务方面,您不需要多种方法。
如果我的服务需要多个参数,那么这种语法会是什么样的?
如果您使用svcutil.exe
使用/async
开关生成客户端代理,则在生成的客户端代理中,方法签名将与服务器上的方法签名匹配。因此,如果您在服务器方法上有多个参数,那么客户端方法上也会有多个参数。