近來在處理一些Serial port的問題,打算將讀取data的程式做成thread,減少主線程被佔住的時間,發現使用Event與Thread配合,還挺不錯用的,方式如下:
先定義一個 event的 HANDLE
HANDLE m_hReadEvent;
在MFC的OnInitialDlg() Create他
// CreateEvent第一個參數可以不設定,第二個參數為是否使用手動設定Event 的Signal,第三個參數是設定初始值,第四個參數是Alias name
m_hReadEvent = CreateEvent(NULL, true, false, NULL);
在要讀取資料前設定Event的signal
SetEvent(m_hReadEvent);
在Thread裡用
WaitForSingleObject(m_hReadEvent, INFINITE) == WAIT_OBJECT_0去判斷Signal是否Enable,是的話就接收buffer的資料,並將Event的signal disable。
ResetEvent(m_hReadEvent);
若要讓Thread一直跑,就使用while(1)的迴圈去跑就可以了。