c# - 如何从已取消的线程中释放内存和 CPU 使用率?
问题描述
CancellationToken
如果用户在 GET 请求后关闭选项卡,我已经习惯于ActionFilter
取消任务(因为这是一项繁重的任务,即需要 20 秒的时间和内存)。
if (!token.IsCancellationRequested)
{
token.Register(() => { throw new OperationCanceledException(token); });
}
在控制器操作中,我有GetAsync
进行大量计算的方法。
现在,当从浏览器发出 GET 请求并在 5 秒后关闭浏览器选项卡时,它会抛出异常并继续执行直到完成。我希望它进一步停止处理并释放内存和 CPU。
我在取消任务后使用了断点,它仍然计算没有用的结果(18,00,000 个结果),除了抛出异常之外,取消也没有任何效果。
由于打开/关闭原则,我也无法将令牌传递给 Controller 并在那里做一些事情。
我试过Environment.Exit(0)
了,但它关闭了 IIS Express 并停止了服务器。
请告诉我一种在抛出取消异常后立即释放内存和 CPU 使用率的方法。
解决方案
推荐阅读
- react-native - 反应导航中嵌套导航器中的深度链接
- emacs - Emacs的ediff模式是否支持同步点?
- java - 用户重新打开浏览器时如何恢复我的 Web 应用程序的旧会话?
- python - 调试python代码时,中文变量显示为Unicode
- asp.net-core - 无法在 ASP.NET Core 2.0 中增加会话超时
- javascript - 什么是谷歌搜索结果页轮播技术?
- django - 序列化时保持json数据的顺序
- sql - 根据 Oracle 数据库中不同表中存在的列列表选择列?
- javascript - React.Intl 子字符串来自
- vector - 为什么 &[T] 参数也接受 &Vec
?