如何使用p/invoke终止从c#调用的c++函数

本文关键字:调用 c++ 函数 终止 何使用 invoke | 更新日期: 2023-09-27 18:06:51

我正在使用p/invoke从c#调用一个c++函数,这个函数有一个无限循环(捕获帧到文件),当c#中发生事件时应该打破。

我如何打破循环(终止该函数)?

我尝试在c#的线程中运行这个函数,并在需要终止时中止该线程。但是abort函数不工作

Thread thread = new Thread(myMethod);
thread.Start();
// to terminate the function
thread.Abort();     //didn't respond

如何使用p/invoke终止从c#调用的c++函数

可能最安全的方法是做两件事:

  1. 暴露另一个名为(例如)StopRecording的函数,该函数在本机代码中设置全局变量
  2. 在main函数中,在每次循环迭代开始时检查全局变量的值,以查看StopRecording是否已被调用(如果是,则跳出循环)

这使得它可以自然终止而不需要任何强制终止。