forked from wmjordan/PDFPatcher
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTracker.cs
78 lines (70 loc) · 1.88 KB
/
Tracker.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
using System;
using System.ComponentModel;
using System.Diagnostics;
namespace PDFPatcher
{
static class Tracker
{
internal enum Category
{
Message = -1,
ImportantMessage = -2,
Error = -3,
Alert = -4,
Notice = -5,
InputFile = -10,
OutputFile = -11
}
static BackgroundWorker __Worker;
///<summary>指定后台工作进程。</summary>
internal static void SetWorker(BackgroundWorker value) {
__Worker = value;
}
internal static void TrackProgress(int progress) {
ReportProgress(progress, null);
}
internal static void IncrementProgress(int progress) {
ReportProgress(progress, "INC");
}
internal static void IncrementTotalProgress() {
ReportProgress(1, "TINC");
}
internal static void SetProgressGoal(int goalNumber) {
ReportProgress(goalNumber, "GOAL");
}
internal static void SetTotalProgressGoal(int goalNumber) {
ReportProgress(goalNumber, "TGOAL");
}
internal static void DebugMessage(string message) {
Debug.Write(DateTime.Now.ToString("HH:mm:ss.fff "));
Debug.WriteLine(message);
}
internal static void TraceMessage(Category level, string message) {
Trace.Write(DateTime.Now.ToString("HH:mm:ss.fff "));
Trace.WriteLine(message);
var worker = __Worker;
if (worker != null && worker.IsBusy) {
worker.ReportProgress((int)level, message);
}
}
internal static void TraceMessage(string message) {
TraceMessage(Category.Message, message);
}
internal static void TraceMessage(Exception exception) {
TraceMessage(Category.Error, exception.Message);
#if DEBUG
TraceMessage(Category.Message, exception.StackTrace);
#endif
}
static void ReportProgress(int progress, string category) {
var worker = __Worker;
if (worker == null) {
return;
}
if (worker.CancellationPending) {
throw new OperationCanceledException();
}
worker.ReportProgress(progress, category);
}
}
}