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

How to Terminate a C++ Function Called form C# Using p/invoke

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

我怎样才能打破那个循环(终止那个函数)?

我尝试在 C# 的线程中 运行 此函数,并在需要终止时中止该线程。 但是中止功能不起作用

Thread thread = new Thread(myMethod);
thread.Start();

// to terminate the function
thread.Abort();     //didn't respond

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

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

这让它自然终止而不需要任何粗暴的终止。