簡體   English   中英

我如何在 C++ 和 C# 中跟蹤 function 的進度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM