簡體   English   中英

CreateThread傳遞std :: string作為參數

[英]CreateThread passing std::string as argument

我需要在托管C ++代碼(CLR)中創建一個線程,以調用傳遞std::string作為參數的非托管C ++類成員函數。 線程被調用,但是接收到的std::string被接收為空字符串:

托管代碼:

std::string param;
CreateThread(0, NULL, (LPTHREAD_START_ROUTINE) &MyThread.Start, &MyThread, (DWORD) &param, NULL);

非托管代碼:

class MyThread
{
    public:
        MyThread();
        static void Start(std::string &param);
};

void MyThread::Start(std::string &param)
{
    std::cout << param << std::endl; <<=== param is empty here
}

具體而言,您將&MyThread作為線程函數參數傳遞,並將param作為CreateThread函數的dwCreationFlags參數傳遞,該param指定線程創建選項。

另外,您需要確保在線程的生存param保持param不變。

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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