8
8
using System . Windows . Forms ;
9
9
using System . Threading ;
10
10
using System . Reflection ;
11
+ using System . IO ;
11
12
12
13
namespace CSMDevHelper
13
14
{
@@ -32,6 +33,8 @@ public partial class frmCSMDH : Form
32
33
private EventWaitHandle waitHandle ;
33
34
private ThreadState threadState ;
34
35
private FormState formState ;
36
+ private LogReader m_logReader ;
37
+ private FileSystemWatcher m_watcher ;
35
38
36
39
public frmCSMDH ( )
37
40
{
@@ -80,7 +83,6 @@ public frmCSMDH()
80
83
private void btnLogStart_Click ( object sender , EventArgs e )
81
84
{
82
85
this . threadState = ThreadState . RUN ;
83
- LogReader logReader ;
84
86
listNode . Clear ( ) ;
85
87
listFilterNode . Clear ( ) ;
86
88
tbEvent . Clear ( ) ;
@@ -103,20 +105,27 @@ private void btnLogStart_Click(object sender, EventArgs e)
103
105
btnLogStop . Enabled = true ;
104
106
btnLogPause . Enabled = true ;
105
107
108
+ m_watcher = new FileSystemWatcher ( ) ;
109
+ m_watcher . Path = Path . GetDirectoryName ( log_filename ) ;
110
+ m_watcher . Filter = Path . GetFileName ( log_filename ) ;
111
+ m_watcher . NotifyFilter = NotifyFilters . LastWrite ;
112
+ m_watcher . Changed += new FileSystemEventHandler ( watcher_OnChanged ) ;
113
+ m_watcher . EnableRaisingEvents = true ;
114
+
106
115
try
107
116
{
108
117
if ( ( rbtnAuto . Checked &&
109
118
registryHandler . DriverVersion == enumDriverVersion . CP5000 ) ||
110
119
rbtnCP . Checked )
111
120
{
112
- logReader = new LogCPReader ( log_filename , ! chkTailing . Checked ) ;
121
+ m_logReader = new LogCPReader ( log_filename , ! chkTailing . Checked ) ;
113
122
}
114
123
else if ( ( rbtnAuto . Checked &&
115
124
( registryHandler . DriverVersion == enumDriverVersion . MCD4x ||
116
125
registryHandler . DriverVersion == enumDriverVersion . MCD5x ) ) ||
117
126
rbtnMCD . Checked )
118
127
{
119
- logReader = new LogMCDReader ( log_filename , ! chkTailing . Checked ) ;
128
+ m_logReader = new LogMCDReader ( log_filename , ! chkTailing . Checked ) ;
120
129
}
121
130
else
122
131
{
@@ -137,11 +146,16 @@ private void btnLogStart_Click(object sender, EventArgs e)
137
146
logThread . Name = "LogReaderThread" ;
138
147
logThread . Priority = ThreadPriority . Lowest ;
139
148
logThread . IsBackground = true ;
140
- logThread . Start ( logReader ) ;
149
+ logThread . Start ( m_logReader ) ;
141
150
while ( ! logThread . IsAlive ) ;
142
151
blockControls ( sender , e ) ;
143
152
}
144
153
154
+ private void watcher_OnChanged ( object sender , FileSystemEventArgs e )
155
+ {
156
+ Console . WriteLine ( "The file {0} has been changed, changed" , e . Name ) ;
157
+ }
158
+
145
159
private void btnLogStop_Click ( object sender , EventArgs e )
146
160
{
147
161
this . threadState = ThreadState . STOP ;
@@ -153,6 +167,10 @@ private void btnLogStop_Click(object sender, EventArgs e)
153
167
btnLogPause . Enabled = false ;
154
168
btnLogPause . Text = "Pause" ;
155
169
unblockControls ( sender , e ) ;
170
+ if ( m_logReader != null )
171
+ {
172
+ m_logReader . Close ( ) ;
173
+ }
156
174
}
157
175
158
176
private void btnLogPause_Click ( object sender , EventArgs e )
@@ -633,7 +651,7 @@ private void openLogFile(object sender, EventArgs e)
633
651
if ( dialog . ShowDialog ( ) == DialogResult . OK )
634
652
{
635
653
log_filename = dialog . FileName ;
636
- if ( log_filename . Equals ( default_log_filename , StringComparison . CurrentCultureIgnoreCase ) )
654
+ if ( log_filename . Equals ( default_log_filename , StringComparison . CurrentCultureIgnoreCase ) )
637
655
{
638
656
rbtnAuto . Visible = true ;
639
657
rbtnMCD . Visible = false ;
0 commit comments