예제 #1
0
        private static void LoadPacketFilesTask(IEnumerable <FileControlParam> files)
        {
            var packets_new = CreatePacketContainer();

            foreach (var(file, index) in files.Select((value, index) => (value, index)))
            {
                /* ステータステキストを更新 */
                FormUiManager.SetStatusText(
                    StatusTextID.SaveLoadEventFile,
                    String.Format(
                        "{0} {1} / {2} ({3})",
                        ConfigManager.Language.MainMessage.EventFileLoading.Value,
                        index + 1,
                        files.Count(),
                        packets_new.Count));

                /* PacketLogReaderが生成できなければ読み込まない */
                var reader = file.Format.CreateReader() as PacketLogReader;

                if (reader == null)
                {
                    continue;
                }

                /* ファイルを開くことができない場合は何もしない */
                if (!reader.Open(file.Option, file.FilePath))
                {
                    continue;
                }

                DebugManager.MessageOut(string.Format("LoadPacketFile - Start [{0}]", Path.GetFileName(file.FilePath)));

                /* プログレスバーを初期化 */
                FormUiManager.SetProgressBar(0, false);

                /* ファイルを1つずつ処理 */
                var task = (new LoadPacketFileExecTaskDelegate(LoadPacketFileExecTask)).BeginInvoke(
                    packets_new, reader, null, null);

                /* 完了待ち */
                while (!task.IsCompleted)
                {
                    System.Threading.Thread.Sleep(100);
                    FormUiManager.SetProgressBar((byte)(reader.ProgressNow / (Math.Max(reader.ProgressMax / 100, 1))), false);
                }
            }

            /* コンテナ差し替え */
            packets_?.Dispose();
            packets_ = packets_new;

            /* ステータスバーを終了 */
            FormUiManager.SetStatusText(StatusTextID.SaveLoadEventFile, ConfigManager.Language.MainMessage.EventFileLoadComplete.Value);
            FormUiManager.SetProgressBar(100, true);

            /* 再描画 */
            FormTaskManager.RedrawPacketRequest();
        }
예제 #2
0
        public static void Startup()
        {
            /* パケットマネージャー初期化 */
            BasePacketManager              = new PacketManager(true);
            BasePacketManager.PacketEntry += OnPacketEntry;

            /* 使用していないパケットキャッシュを削除する */
            //            ResetPacketCacheDirectory();

            packets_ = CreatePacketContainer();
        }
예제 #3
0
        private static void LoadPacketFileExecTask(IPacketContainer packets, PacketLogReader reader)
        {
            PacketObject packet;

            while ((packet = reader.ReadPacket()) != null)
            {
                packets.Add(packet);
            }

            reader.Close();

            DebugManager.MessageOut("LoadPacketFile - Complete");
        }
예제 #4
0
        public static void ClearPacket()
        {
            AutoTimeStampManager.ClearPacket();

            /* コンテナ初期化 */
            lock (packets_sync_) {
                packets_?.Dispose();
                packets_ = CreatePacketContainer();
            }

            BasePacketManager.Clear();

            /* イベント通知 */
            RawPacketCleared();

            /* UIパケットをクリア */
            FormTaskManager.DrawPacketClear();
        }