.net - "Watch Dog"或 c# 中的沙箱系统

标签 .net timeout sandbox

我有一个函数,我想让它运行给定的时间长度,然后,如果它没有自行退出,则中止。 执行此操作的最佳方法是什么?

我想到的最好的办法是在另一个线程中运行它,等待它超时,然后使用 Thread.Abort() 杀死它(如果该函数有错误类型的 catch block )。另一种选择(我不知道如何实现)是某种带有 throw 的抢占式计时器。

还有更好的方法吗?某种简单的沙盒系统?


编辑:我将要运行的函数没有任何系统来检查它是否应该取消,而我不能(因为不能 ) 添加它。此外,这是一种测试工具,所以我将终止该功能的条件是它运行不正常。在那种情况下,我不能指望它能正确地做任何事情。

最佳答案

对于这样的事情可能有点矫枉过正,但您可以考虑是否要将托管该线程的任何内容加载到 AppDomain 中。 AppDomain 本质上是一个 .NET 沙箱。

如果线程进入杂草,您可以杀死 AppDomain。

关于.net - "Watch Dog"或 c# 中的沙箱系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1225689/

相关文章:

c# - 用代码模仿 Windows 任务计划程序

.net - 将现有列标记为数据表中的主键

c# - 如何从客户端 JavaScript 函数调用服务器方法背后的代码?

actionscript-3 - ActionScript 屏幕空闲

swift - 由于 Swift 超时,如何取消 cloudKit 操作?

paypal - 请登录以使用 PayPal 沙盒功能

c# - Reflection.Emit:如何可靠地将 MethodBuilder 转换为 RuntimeMethodInfo?

c++ - SetCurrentDirectory 超时

ubuntu - 我可以使用 docker 在当前系统上提供简单的文件覆盖吗?

macos - 应用程序分发时缺少 "com.apple.security.app-sandbox"