如何使用 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
可能最安全的方法是做两件事:
- 公开另一个名为(例如)
StopRecording
的函数,它在您的本机代码中设置一个全局变量
- 在您的主函数中,在每次循环迭代开始时检查全局变量的值,以查看是否已调用
StopRecording
(如果已调用,则跳出循环)
这让它自然终止而不需要任何粗暴的终止。
我正在使用 p/invoke 从 C# 调用一个 C++ 函数,此函数有一个无限循环(将帧捕获到文件),当 C# 中发生事件时应该将其中断。
我怎样才能打破那个循环(终止那个函数)?
我尝试在 C# 的线程中 运行 此函数,并在需要终止时中止该线程。 但是中止功能不起作用。
Thread thread = new Thread(myMethod);
thread.Start();
// to terminate the function
thread.Abort(); //didn't respond
可能最安全的方法是做两件事:
- 公开另一个名为(例如)
StopRecording
的函数,它在您的本机代码中设置一个全局变量 - 在您的主函数中,在每次循环迭代开始时检查全局变量的值,以查看是否已调用
StopRecording
(如果已调用,则跳出循环)
这让它自然终止而不需要任何粗暴的终止。