public void InvalidConfig(string name, int majorVersion)
 {
     RemoteConfigSectionCollection lstParams = new RemoteConfigSectionCollection(config.ApplicationName);
     int orgMinorVersion = 0;
     lock (configLocker)
     {
         foreach (ConfigEntry entry in configEntries.Values)
         {
             if (entry.Name == name)
             {
                 if (entry.IsSet && entry.MajorVersion == majorVersion)
                 {
                     orgMinorVersion = entry.MinorVersion;
                     lstParams.AddSection(entry.Name, entry.MajorVersion, entry.MinorVersion);
                 }
                 break;
             }
         }
     }
     InvalidConfigs(lstParams);
 }
 public void InvalidAllConfigs()
 {
     RemoteConfigSectionCollection lstParams = new RemoteConfigSectionCollection(config.ApplicationName);
     lock (configLocker)
     {
         foreach (ConfigEntry entry in configEntries.Values)
         {
             if (entry.IsSet)
                 lstParams.AddSection(entry.Name, entry.MajorVersion, entry.MinorVersion);
         }
     }
     InvalidConfigs(lstParams);
 }
        private void TimerCallback(object stat = null)
        {
            if (!timerRunning)
            {
                lock (configLocker)
                {
                    timerRunning = true;
                    try
                    {
                        //Log(string.Format("start Time:{0}", DateTime.Now.ToString()));
                        RemoteConfigSectionCollection lstParams = new RemoteConfigSectionCollection(config.ApplicationName);
                        //configLocker.AcquireReaderLock(-1);
                        //using (configLocker.AcquireReaderLock())

                        foreach (ConfigEntry entry in configEntries.Values)
                        {
                            if (entry.IsSet)
                                lstParams.AddSection(entry.Name, entry.MajorVersion, entry.MinorVersion);
                        }
                        //configLocker.ReleaseReaderLock();
                        if (lstParams.Count != 0)
                        {
                            lstParams = GetServerVersions(lstParams);
                            if (lstParams.Count != 0)
                            {
                                Log(string.Format("获得新的配置文件:SectionName:{0} MajorVersion:{1} MinorVersion:{2}", lstParams[0].SectionName, lstParams[0].MajorVersion, lstParams[0].MinorVersion));
                                foreach (RemoteConfigSectionParam param in lstParams.Sections)
                                {
                                    ThreadPool.QueueUserWorkItem(
                                        delegate(object obj)
                                        {
                                            DownloadParam dp = (DownloadParam)obj;
                                            Download(dp.Name, dp.Url, dp.LocalPath, dp.Checker);
                                        },
                                        new DownloadParam(param.SectionName,
                                            param.DownloadUrl,
                                            GetPath(param.SectionName),
                                            CheckDownloadStream)
                                            );
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Log(ex.ToString());
                    }
                    finally
                    {
                        timer.Change(config.TimerInterval, Timeout.Infinite);
                        timerRunning = false;
                    }
                }
            }
        }
        private void TimerCallback(object sender, System.Timers.ElapsedEventArgs args)
        {
            RemoteConfigSectionCollection lstParams = new RemoteConfigSectionCollection(config.ApplicationName);
            //configLocker.AcquireReaderLock(-1);
            //using (configLocker.AcquireReaderLock())
            if (!timerRunning)
            {
                lock (configLocker)
                {
                    timerRunning = true;
                    foreach (ConfigEntry entry in configEntries.Values)
                    {
                        if (entry.IsSet)
                            lstParams.AddSection(entry.Name, entry.MajorVersion, entry.MinorVersion);
                    }
                    //configLocker.ReleaseReaderLock();

                    if (lstParams.Count != 0)
                    {
                        lstParams = GetServerVersions(lstParams);
                        if (lstParams.Count == 0) return;
                        foreach (RemoteConfigSectionParam param in lstParams.Sections)
                        {
                            ThreadPool.QueueUserWorkItem(
                                delegate(object obj)
                                {
                                    DownloadParam dp = (DownloadParam)obj;
                                    Download(dp.Name, dp.Url, dp.LocalPath, dp.Checker);
                                },
                                new DownloadParam(param.SectionName,
                                    param.DownloadUrl,
                                    GetPath(param.SectionName),
                                    CheckDownloadStream)
                                    );
                        }
                    }
                    timerRunning = false;
                }
            }
        }
 private RemoteConfigSectionParam GetServerVersion(string name, int majorVersion)
 {
     RemoteConfigSectionCollection lstParams = new RemoteConfigSectionCollection(config.ApplicationName);
     lstParams.AddSection(name, majorVersion, XmlSerializerSectionHandler.DefaultUninitMinorVersion);
     lstParams = GetServerVersions(lstParams);
     if (lstParams.Count == 0)
         return null;
     else
         return lstParams[0];
 }