void AsyncOpTracker::Kill(AsyncOp *theOp)
{
	AutoCrit aCrit(mDataCrit);
	AsyncOpPtr anOp = theOp;
	if(Untrack(theOp))
		anOp->Kill();
}
void AsyncOpTracker::KillAll()
{
	AutoCrit aCrit(mDataCrit);
	OpMap::iterator anItr = mOpMap.begin();
	while(anItr!=mOpMap.end())
	{
		AsyncOpPtr anOp = anItr->second->val;
		mOpMap.erase(anItr++);
		anOp->Kill();
	}
}
void AsyncOpTracker::Kill(DWORD theId)
{
	AutoCrit aCrit(mDataCrit);
	OpMap::iterator anItr = mOpMap.find(theId);
	while(anItr!=mOpMap.end() && anItr->first==theId)
	{
		AsyncOpPtr anOp = anItr->second->val;
		mOpMap.erase(anItr++);
		anOp->Kill();
	}
}