关于QueueUserAPC调用函数的问题
使用QueueUserApc出现了问题:下面是我的两个类的方法!一个是增加功能,一个是删除功能。他们都通过QueueUserAPC调用另一个类CFileChangesServer的方法AddDirectoryProc和CanclDirectoryProc来实现增加和删除记录的功能!可奇怪的是调用AddDirectory是并没有问题!我debug时跟踪程序流程,发现确实是调用到了AddDirectoryProc,但是调用CanclDirectory函数时发现并没有调用CanclDirectoryProc函数,而是继续使用了AddDirectProc函数!这是为什么呢?
CWatchFileChanges::AddDirectory(LPCTSTR szDirectory,BOOL bWatchSubtree, DWORD dwNotifyFilter, DWORD dwBufferSize)
{
CWatchChangesRequst *pRequest= new CWatchChangesRequst(m_pServer,szDirectory,bWatchSubtree,dwNotifyFilter,dwBufferSize);
QueueUserAPC(CFileChangesServer::AddDirectoryProc, m_hThread, (ULONG_PTR)pRequest);
}
CWatchFileChanges::CanclDirectory(LPCTSTR szDirectory,BOOL bWatchSubtree, DWORD dwNotifyFilter, DWORD dwBufferSize)
{
CWatchChangesRequst *pRequest= new CWatchChangesRequst(m_pServer,szDirectory,bWatchSubtree,dwNotifyFilter,dwBufferSize);
QueueUserAPC(CFileChangesServer::CanclDirectoryProc, m_hThread, (ULONG_PTR)pRequest);
}