Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 运行托管代码的非托管线程_C#_C++_Multithreading - Fatal编程技术网

C# 运行托管代码的非托管线程

C# 运行托管代码的非托管线程,c#,c++,multithreading,C#,C++,Multithreading,我制作了一个软件,加载客户端制作的外部模块 这个软件应该是HA(高可用性),这意味着它不能被允许崩溃。 为此,我创建了一个类,该类创建一个线程,在其中运行客户机模块函数,然后返回。该类允许一定的时间来执行函数,如果时间过长,则会终止线程。像这样,如果客户机在代码中有一个无限循环或其他东西,从而使其模块出错,那么系统的其余部分不会冻结 现在,我的问题是……如果运行函数的线程是在非托管代码(C++)中创建的,而运行在其中的模块函数是托管代码,那么通过终止线程,我会遇到什么样的问题 谢谢,一般来说,在

我制作了一个软件,加载客户端制作的外部模块

这个软件应该是HA(高可用性),这意味着它不能被允许崩溃。 为此,我创建了一个类,该类创建一个线程,在其中运行客户机模块函数,然后返回。该类允许一定的时间来执行函数,如果时间过长,则会终止线程。像这样,如果客户机在代码中有一个无限循环或其他东西,从而使其模块出错,那么系统的其余部分不会冻结

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


谢谢,

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

如果我正在做这样一个应用程序,我会倾向于研究如何在一个单独的进程中使用定义良好的通信接口托管第三方模块;例如:在COM+应用程序中。这将允许您在整个进程“失控”时终止它,而不会影响“主机”进程的稳定性