volatile 用在多线程环境里基本所有用法都是错误的,何况这个过程还经过了 C# -> C++ DLL 的处理。
简单说,另开一个 DLLExport 的 API stop(),设置一个 C++ 里的全局 flag(用 atomic 或者加锁),然后在这个 test 函数里 check 这个 flag 试试看。
更好的应该是把计算放在其它线程 / 进程,避免阻塞请求线程。