AdvancedLauncher.UI.Controls.DigiRotation.MainWorkerFunc C# (CSharp) Method

MainWorkerFunc() private method

private MainWorkerFunc ( object sender, DoWorkEventArgs e ) : void
sender object
e System.ComponentModel.DoWorkEventArgs
return void
        private void MainWorkerFunc(object sender, DoWorkEventArgs e)
        {
            //Ротация в цикле
            while (true) {
                //Если источник не загружен
                if (!IsSourceLoaded) {
                    Profile currentProfile = ProfileManager.CurrentProfile;
                    //Добавляем задачу загрузки
                    TaskManager.AquireLock(LoadingTask);
                    //Показываем анимацию загрузки
                    IsLoadingAnim(true, true);
                    IsStatic = false;
                    IsErrorOccured = false;
                    //Получаем информацию, необходимую для ротации
                    GuildName = currentProfile.Rotation.Guild;
                    TamerName = currentProfile.Rotation.Tamer;

                    IConfiguration config = ConfigurationManager.GetConfiguration(currentProfile.GameModel);
                    IWebProvider webProvider = config.CreateWebProvider();
                    IServersProvider serversProvider = config.ServersProvider;
                    //Проверяем, доступен ли веб-профиль и необходимая информация

                    IsStatic = webProvider == null || string.IsNullOrEmpty(GuildName);
                    if (!IsStatic) {
                        Server = serversProvider.GetServerById(currentProfile.Rotation.ServerId);
                        //Регистрируем ивенты загрузки
                        webProvider.StatusChanged += EventProxy.OnStatusChanged;
                        webProvider.DownloadCompleted += EventProxy.OnDownloadCompleted;
                        //Получаем информацию о списках гильдии
                        webProvider.GetActualGuild(Server, GuildName, false, currentProfile.Rotation.UpdateInterval + 1);
                        //Убираем обработку ивентов
                        webProvider.DownloadCompleted -= EventProxy.OnDownloadCompleted;
                        webProvider.StatusChanged -= EventProxy.OnStatusChanged;
                    }
                    //Проверяем не произошла ли ошибка
                    if (!IsErrorOccured) {
                        //Закрываем анимацию, устанавливаем флаг загрузки
                        IsLoadingAnim(false);
                    }
                    TaskManager.ReleaseLock(LoadingTask);
                    IsSourceLoaded = true;
                }

                if (!IsErrorOccured && IsSourceLoaded) {
                    UpdateModel();
                    System.Threading.Thread.Sleep(ROTATION_INTERVAL);
                }
            }
        }