【发布时间】:2021-03-22 00:51:31
【问题描述】:
我有一个用 C++ 编写并编译成 DLL 的函数。然后将 DLL 导入 C# 程序并调用该函数。
C++ 函数处理文件可能需要一段时间,所以我一直在寻找一种方法来跟踪函数的进度。
我在想我可以将一个指向浮点数的指针传递给函数,在 C# 的线程中运行该函数,然后打印浮点数的值:
C++ 函数:
void process(float *status)
{
//process file code
//............//
*status = processed / total * 100;
}
然后在C#代码中:
static extern void process(float *status);
int Main()
{
float status = 0;
thread.start(process(&status));
while(status != 100)
{
Console.Write(status);
}
}
唯一的问题是我无法将指向线程的指针作为参数传递。
我怎样才能做到这一点??
【问题讨论】:
-
你需要一个原生的c++ dll吗?或者您可以将项目转换为目标 c++/clr 吗?
-
您需要一些原子类型或其他同步机制来避免数据竞争。
-
这是一个原生的c++ dll
标签: c# c++ multithreading