ASP.NET MVC Asyncronous Controller

时间:2011-12-09 18:23:32

标签: asp.net-mvc model-view-controller asynchronous

我正在尝试在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示例没有说明修改我的服务。

接下来的问题,如果我的服务需要多个参数,那么这种语法会是什么样的?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

  

我的服务中是否还必须有多种方法?

这取决于服务的含义。例如,如果您有使用svcutil.exe导入的Web服务,则可以指定/async开关,该开关将在生成代理时为所有方法生成同步和异步方法签名。在服务方面,您不需要多种方法。

  

如果我的服务需要多个参数,那么这种语法会是什么样的?

如果您使用svcutil.exe使用/async开关生成客户端代理,则在生成的客户端代理中,方法签名将与服务器上的方法签名匹配。因此,如果您在服务器方法上有多个参数,那么客户端方法上也会有多个参数。