スレッドを複数回呼び出して、変数が台無しになるという問題があります。私はスレッドが初めてなので、単純なものが欠けていると確信しています。
struct PARAMS
{
time_t secondsAtStart;
};
DWORD WINAPI ProcessChange(void* parameter) {
PARAMS* params = (PARAMS*)parameter;
Sleep(3000);
_tprintf(TEXT("Seconds: (%d)\n"), params->secondsAtStart);
return 0;
}
void FileChanged(CString filename, CString action) {
struct PARAMS *params = NULL;
params = (struct PARAMS *)malloc(sizeof(PARAMS)+1);
params->secondsAtStart = time(null);
// I've also tried it this way.
//PARAMS params;
//params.secondsAtStart = time(NULL);
HANDLE hThread = CreateThread(NULL, 0, ProcessChange, ¶ms, 0, NULL);
// If I uncomment this, it works, but just one thread runs at a time.
//WaitForSingleObject(hThread, INFINITE);
}
WaitForSingleObject のコメントを外さないと、secondsAtStart 変数が破損します。私が必要とする最終的な結果は、FileChanged が次々に 3 回呼び出された場合、最初の 2 回の実行では何もせず、最後の 1 回でアクションを実行することです。
ありがとう、ベン