小编use*_*089的帖子

终止我无法控制的线程运行代码

我正在做一个项目,我在运行时加载几个程序集,对于每个程序集,我使用反射来查找一些特定的类,实例化它们并调用它们的方法.所有这一切都运行正常,但对于某些调用,进程遇到堆栈溢出,终止了我的整个程序.我没有任何控制我正在加载的程序集的源代码,所以我无法更改我正在执行的代码.

我试图解决这个问题:

  1. 我指定一个线程来调用方法,并尝试
    在timeintervall之后中止线程(我知道这是不好的做法,但我不能更改代码以终止友好).然而,这不起作用,我认为线程是忙于"stackoverflowing"来处理中止调用.

  2. 我已经尝试减少线程可以访问的实际内存,这甚至不是一个解决方案,因为你无法捕获stackoverflow-exception所以我的程序无论如何终止(只是更快)

问题:

  1. 一个线程可以忙于中止吗?是否有某种方法可以中止具有此行为的线程?
  2. 我们怎样才能以良好的方式调用代码(我们无法控制)?

提前致谢!

c# stack-overflow multithreading assemblies

4
推荐指数
1
解决办法
128
查看次数

标签 统计

assemblies ×1

c# ×1

multithreading ×1

stack-overflow ×1