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; } }
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; } }