gpt4 book ai didi

c# - 运行托管代码的非托管线程

转载 作者:行者123 更新时间:2023-11-28 01:13:38 25 4
gpt4 key购买 nike

我做了一个软件,可以加载客户制作的外部模块。

该软件应该是 HA(高可用性),这意味着它不能崩溃。为此,我创建了一个创建线程的类,在其中运行客户端模块函数,然后返回。该类允许一定的时间来执行函数,如果时间太长,则杀死线程。像这样,如果客户通过无限循环或代码中的任何内容搞砸了他的模块,系统的其余部分不会卡住。

现在,我的问题是......如果运行该函数的线程是在非托管代码 (C++) 中创建的,并且在其中运行的模块函数是托管代码,那么通过终止线程我会遇到什么样的问题?

谢谢,

最佳答案

一般来说,杀死正在运行的进程中的线程是不安全的;请参阅 TerminateThread 中的警告和注意事项.

如果我正在开发这样的应用程序,我会倾向于研究在具有明确定义的通信接口(interface)的单独进程中托管第 3 方模块的方法;例如:在 COM+ 应用程序中。如果它“失控”,这将允许您终止整个进程,而不会影响“主机”进程的稳定性。

关于c# - 运行托管代码的非托管线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/510018/

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