25/03/10 14:42
robrock80
Salve a tutti. Ho scritto 2 funzioncine per inviare MessageBox, ma non funzionano, probabilmente uso male i mutex, ecco il codice
Praticamente mi salta il wait del mutex, dove sbaglio?
typedef struct _Params { void *param[11]; void *returned[11]; void (*function[11])(struct _Params *); } Params; HANDLE sendAsynchronousMessage(TCHAR title[], TCHAR text[], int type) { DWORD dwThreadId; HANDLE mutex = CreateMutex(NULL,FALSE,NULL); Params params = {{(TCHAR*)title,(TCHAR*)text, &type, &mutex}}; HANDLE hThread = CreateThread( NULL, //Choose default security 0, //Default stack size (LPTHREAD_START_ROUTINE)&sendMessage, ¶ms, 0, //Lancia il Thread immediatamente &dwThreadId); WaitForSingleObject(mutex, INFINITE); printf("mutex rilasciato\n"); return hThread; } DWORD sendMessage(LPVOID param) { Params* params = (Params*)param; HANDLE mutex = (HANDLE*)params->param[3]; TCHAR* title = (TCHAR*)malloc(sizeof(TCHAR) * _tcslen((TCHAR*)params->param[0])); _tcscpy(title,(TCHAR*)params->param[0]); TCHAR* message = (TCHAR*)malloc(sizeof(TCHAR) * _tcslen((TCHAR*)params->param[1])); _tcscpy(message,(TCHAR*)params->param[1]); if (mutex != 0) { printf("entrato\n"); ReleaseMutex(mutex); } MessageBox( NULL, message, title, *(int*)params->param[2]); free(title); free(message); return 0; }
Praticamente mi salta il wait del mutex, dove sbaglio?
Ultima modifica effettuata da robrock80 25/03/10 15:02
aaa