如何实现允许用户在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
)来停止该操作。
我只需要知道这是正确的方法。或许还有另一种(更好的)解决方案。
答案 0 :(得分:1)
你很近但有内置功能:CancellationToken。通过使用它而不是您自己的东西,您的代码可以更好地与其他.NET API。这是使用它的MSDN article