public int IndexOfKey(string key, KeyAccess access) { try { Lock(); string downloadID; switch (access) { case KeyAccess.FileHash: if (m_FileHash.TryGetValue(key, out downloadID)) { return(m_DownloadID.IndexOfKey(downloadID)); } return(-1); case KeyAccess.OnceHashedFileHash: if (m_OnceHashedFileHash.TryGetValue(key, out downloadID)) { return(m_DownloadID.IndexOfKey(downloadID)); } return(-1); case KeyAccess.TwiceHashedFileHash: if (m_TwiceHashedFileHash.TryGetValue(key, out downloadID)) { return(m_DownloadID.IndexOfKey(downloadID)); } return(-1); case KeyAccess.ThriceHashedFileHash: if (m_ThriceHashedFileHash.TryGetValue(key, out downloadID)) { return(m_DownloadID.IndexOfKey(downloadID)); } return(-1); default: return(m_DownloadID.IndexOfKey(key)); } } finally { Unlock(); } }