void CheckWorker() { while (!m_CheckThreadQuit) { IUpdateCheckResult checkResult = UpdateInfo.Get(m_Guids, m_Url, m_MaxRedirects); try { Monitor.Enter(m_Targets); for ( LinkedListNode <UpdateCheckNotificationTarget> cur = m_Targets.First; null != cur; cur = cur.Next ) { cur.Value.Notify(this, checkResult); } } finally { Monitor.Exit(m_Targets); } m_CheckThreadWork.WaitOne(); } }