[英]How can i track the progress of a function in C++ and C#
我有一個用 C++ 編寫的 function 並編譯成 DLL。 然后將 DLL 導入 C# 程序並調用 function。
C++ function 處理文件可能需要一段時間,所以我正在尋找一種方法來跟蹤 function 的進度。
我在想我可以將一個指向浮點數的指針傳遞給 function,在 C# 的線程中運行 function,然后打印浮點數的值:
C++ function:
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++ 代碼,則可以將status
變量替換為回調。
如果沒有,您可以將狀態的局部變量設置為您喜歡的全局變量:
volatile float status;
void ThreadWorker()
{
process(ref status);
}
int Main()
{
Thread t = new Thread(ThreadWorker);
t.Start();
while(status != 100)
{
Console.Write(status);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.