私は現在、C ++ dllのシェルを構築する必要があるプロジェクトに取り組んでいるため、新しいC#GUIでその機能を使用できます。ただし、次の問題が発生しました。C++の部分では、特定の理由で新しいスレッドを作成する必要があり、int配列を新しいスレッドに渡したいと考えています。これが発生する関数で配列に割り当てられた値は、コードのC#部分から取得されることに注意してください。
__declspec( dllexport ) void CreateReportPane(int &id, int &what)
{
DWORD threadId;
int iArray[2] = { id, what};
HANDLE hThread = CreateThread( NULL, 0, CreateReportPaneThread, iArray, 0, &threadId);
if (hThread == NULL)
{
ExitProcess(3);
}
}
新しいスレッドで問題が発生し、配列から最初の値を確実にフェッチできますが、2番目の値が解放されているようです。これが反対側のコードです。
DWORD WINAPI CreateReportPaneThread(LPVOID lparam)
{
int id, what;
id = *(( int * )lparam);
what = *(((int *)lparam)+1) ;
CreateReportPaneOriginal(id, what);
return 0;
}
元のスレッドを拘束していないときに配列の値が解放されないようにする方法はありますか?よろしくお願いします