Ejemplo n.º 1
0
        private void ReadProgressCallback_Console(ReadAllFilesOnFolder.EventType ev, string path, string errMsg, int finished, int total)
        {
            double progressPercentage = (double)finished * 100 / total;

            switch (ev)
            {
            case ReadAllFilesOnFolder.EventType.CollectionFinished:
                Console.WriteLine("Found {0} files.", total);
                break;

            case ReadAllFilesOnFolder.EventType.ReadError:
                Console.WriteLine("{0}", errMsg);
                break;

            case ReadAllFilesOnFolder.EventType.ReadProgressed:
                if (1000 < mStopWatchLogUpdate.ElapsedMilliseconds)
                {
                    Console.WriteLine("  {0:0.00} %", progressPercentage);
                    mStopWatchLogUpdate.Restart();
                }
                break;

            default:
                break;
            }
        }
Ejemplo n.º 2
0
        private void ReadProgressCallback_WindowMode(ReadAllFilesOnFolder.EventType ev, string path, string errMsg, int finished, int total)
        {
            if (mWindowClosing)
            {
                return;
            }

            int progressPercentage = (int)((long)finished * 100 / total);

            switch (ev)
            {
            case ReadAllFilesOnFolder.EventType.CollectionFinished:
                lock (mSbLog) {
                    mSbLog.AppendFormat("Found {0} files.\n", total);
                }
                Interlocked.Increment(ref mLogCounter);
                mBW.ReportProgress(0);
                break;

            case ReadAllFilesOnFolder.EventType.ReadError:
                lock (mSbLog) {
                    mSbLog.AppendFormat("{0}\n", errMsg);
                }
                Interlocked.Increment(ref mLogCounter);
                break;

            case ReadAllFilesOnFolder.EventType.ReadProgressed:
                if (1000 < mStopWatchLogUpdate.ElapsedMilliseconds)
                {
                    // 頻度が高いと破綻するので。
                    // 1秒に1回ログ表示を更新する。
                    mBW.ReportProgress(progressPercentage);
                    mStopWatchLogUpdate.Restart();
                }
                break;

            case ReadAllFilesOnFolder.EventType.ReadFinished:
                lock (mSbLog) {
                    mSbLog.AppendFormat("Completed.\n");
                }
                Interlocked.Increment(ref mLogCounter);
                break;

            default:
                break;
            }
        }