Esempio n. 1
0
 public void Stop(StoppedCallback stopped)
 {
     this.server.Stop();
     this.IsWorking = false;
     this.ConnectedClients.ForEach(client => client.Disconnect());
     this.ConnectedClients.Clear();
     stopped?.Invoke(this);
 }
Esempio n. 2
0
    // Use this for initialization
    void Start()
    {
        SRenderer      = GetComponent <SpriteRenderer>();
        StoppedHandler = OnStoppedAnimation;
        if (gameObject.name.Contains("splat"))
        {
            StoppedHandler += FindObjectOfType <LevelBounds>().StopClonesUpdate;
        }

        if (sprites == null && doIdle)
        {
            PlayAnimation("Idle", GetComponent <PlayerHit>().color);
        }
    }
        private async void Form_Shown(object sender, EventArgs e)
        {
            ProgressBar.Enabled = true;
            ProgressBar.Style   = ProgressBarStyle.Marquee;

            StartingTime = DateTime.Now;
            timeCounter.Start();

            // 最終クロール情報を保存
            App.UserSettings.SaveOnCrawl(DateTime.Now, TargetDirPaths);

            // 常駐クロール中であれば、いったん常駐クロールを停止
            if (App.Crawler.AlwaysCrawlIsRunning)
            {
                await App.Crawler.StopAlwaysCrawlIfRunningAsync(); // 停止完了まで待機
            }

            // 全体クロール開始
            TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Indeterminate, Handle);

            var res = await App.Crawler.RunFullCrawlAsync(TargetDirPaths, (progSender, state) =>
            {
                if (IsDisposed)
                {
                    return;
                }

                switch (state.CurrentStep)
                {
                case ProgressState.Step.DBRecordListUpBegin:
                    statusText.Text = string.Format("登録済み文書の一覧を取得しています...");
                    break;

                case ProgressState.Step.RecordUpdateProcessBegin:
                    ProgressBar.Style = ProgressBarStyle.Marquee;
                    TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Indeterminate, Handle);
                    statusText.Text = string.Format("文書データ登録中...");
                    break;

                case ProgressState.Step.RecordUpdateCheckBegin:
                    // 計測が完了している場合、最大値を設定
                    if (state.TotalValue != null)
                    {
                        if (state.CurrentValue > state.TotalValue.Value)
                        {
                            // 計測が完了していても、現在値が最大値を超えている場合は、残り時間不定
                            // (クロール実施中にファイルが新しく追加されると発生する場合がある)
                            ProgressBar.Style = ProgressBarStyle.Marquee;
                            TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Indeterminate, Handle);
                        }
                        else
                        {
                            ProgressBar.Style   = ProgressBarStyle.Continuous;
                            ProgressBar.Maximum = state.TotalValue.Value;
                            ProgressBar.Value   = state.CurrentValue;
                            TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal, Handle);
                            TaskbarManager.Instance.SetProgressValue(ProgressBar.Value, ProgressBar.Maximum, Handle);
                        }
                    }
                    if (state.TotalValue != null)
                    {
                        statusText.Text = $"文書データ登録中... ({state.CurrentValue} / {state.TotalValue})";
                    }
                    else
                    {
                        statusText.Text = $"文書データ登録中... ({state.CurrentValue})";
                    }
                    break;

                case ProgressState.Step.PurgeProcessBegin:
                    ProgressBar.Style = ProgressBarStyle.Marquee;
                    TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Indeterminate, Handle);
                    statusText.Text = string.Format("存在しない文書データを削除中...");

                    break;

                case ProgressState.Step.Finish:
                    ProgressBar.Style = ProgressBarStyle.Continuous;

                    // バーに即時反映されるようにするため
                    // Maximumの値を+1→現在値をMaximumと同じ値に設定→現在値を-1減らす→Maximumを-1減らす の順で処理
                    ProgressBar.Maximum++;
                    ProgressBar.Value = ProgressBar.Maximum;
                    ProgressBar.Value--;
                    ProgressBar.Maximum--;

                    TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.NoProgress, Handle);

                    break;
                }
            });

            // 正常終了時、表示を更新
            if (res.Finished)
            {
                BtnCancel.Text = "閉じる";
                if (res.Deleted > 0)
                {
                    statusText.Text = string.Format("完了 (更新: {0}, スキップ: {1}, 削除: {2})", res.Updated, res.Skipped, res.Deleted);
                }
                else
                {
                    statusText.Text = string.Format("完了 (更新: {0}, スキップ: {1})", res.Updated, res.Skipped);
                }
                statusTimeCount.ForeColor = SystemColors.ControlText;
                Text = "クロール完了";
            }

            timeCounter.Stop();
            if (StoppedCallback != null)
            {
                StoppedCallback.Invoke();
            }
        }