gpt4 book ai didi

c# - ajax.abort() 的 ASP.NET MVC 解决方法

转载 作者:行者123 更新时间:2023-11-30 17:44:33 26 4
gpt4 key购买 nike

我在 asp.net mvc 上有一个休息端点:

[HttpGet]
public List<SomeEntity> Get(){
// Lets imagine that this operation lasts for 1 minute
var someSlowOperationResult = SomeWhere.GetDataSlow();
return someSlowOperationResult;
}

在前端我有下一个 javascript:

var promise = $.get("/SomeEntities");
setTimeout(function(){promise.abort()}, 100);

如何强制 Thread 在 abort 调用后结束,以防止 计算完成?

提前致谢。

最佳答案

我发现 ResponseisClientConnected 属性。所以我们可以使用下一个方法:

[HttpGet]
public List<SomeEntity> Get(){
var gotResult = false;
var result = new List<SomeEntity>();
var tokenSource2 = new CancellationTokenSource();
CancellationToken ct = tokenSource2.Token;
Task.Factory.StartNew(() =>
{
// Do something with cancelation token to break current operation
result = SomeWhere.GetSomethingReallySlow();
gotResult = true;
}, ct);
while (!gotResult)
{
if (!Response.IsClientConnected)
{
tokenSource2.Cancel();
return result;
}
Thread.Sleep(100);
}
return result;
}

我们可以吗?或者我错过了什么?

更新:

是的,它有效

关于c# - ajax.abort() 的 ASP.NET MVC 解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29506694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com