用户如何停止异步方法?

时间:2014-06-08 19:03:34

标签: c# ajax asp.net-mvc-4 asynchronous

如何实现允许用户在MVC中停止异步方法的机制?

我有意这样做:

public string stopToken { get; set; }
public int iteration { get; set; }

public async Task<string> someActionAsync()
{
    do
    {
        iteration++;
        await SomeService.SomeMethod();
    } while (stopToken != "true");

    return "Complete";
}

public void Stop(string token)
{
    this.stopToken = token;
}

public int returnIteration()
{
    return this.iteration;
}

在前端: 使用ajax someActionAsync方法进行用户调用。已设置对无穷大的操作(do =&gt; while)。用户可以通过单击按钮Stop(以及使用jquery ajax调用方法Stop)来停止该操作。

我只需要知道这是正确的方法。或许还有另一种(更好的)解决方案。

1 个答案:

答案 0 :(得分:1)

你很近但有内置功能:CancellationToken。通过使用它而不是您自己的东西,您的代码可以更好地与其他.NET API。这是使用它的MSDN article