2013-03-05 58 views
1

我只是想知道有无论如何打开和关闭EnableRaisingEvents每100毫秒?例如,最初,EnableRaisingEvents设置为true。当有事件进入时,EnableRaisingEvents设置为false。 100毫秒后,EnableRaisingEvents再次设置为真。直到文件观察者接收到另一个事件,EnableRaisingEvents再次设置为false。 在EnableRaisingEvents关闭的时间内错过事件是可以的(设置为false)。 所以我只是想知道如何在代码中实现这个逻辑。令我困惑的是,如果我使用打勾来决定是否接受该事件,该事件将被解雇?EnableRaisingEvents每100毫秒?

+0

目前尚不清楚你想解决什么问题。请记住,将EnableRaisingEvents设置为false不会*意味着“停止提升事件”。此后事件可能会被解雇一段时间。当你这样做时,你最好不要忘记订阅Error事件。 – 2013-03-05 18:34:45

+0

我想我提到“在EnableRaisingEvents关闭期间错过事件是可以的(设置为false)”。 – 2013-03-05 20:33:43

回答

2

你可以尝试这样的事情(与奥斯汀萨洛宁的建议编辑):

private static Timer _myTimer = new Timer(); 
// ... 
private static void OnTick(Object obj, EventArgs args) 
{ 
    fileSystemWatcher.EnableRaisingEvents ^= true; 
} 

// ... 

_myTimer.Tick += OnTick; 
_myTimer.Interval = 100; 
_myTimer.Start(); 
+0

为什么不在OnTick中切换EnableRaisingEvents而不是共享布尔值? – 2013-03-05 18:02:18

+0

@AustinSalonen我不明白你的意思。你能澄清一点吗? – hattenn 2013-03-05 18:04:09

+0

而不是'_raiseEvent',使用'fsw.EnableRaisingEvents^= true;' – 2013-03-05 18:05:35

0

使用Timer(线程一)并将计时器的已用时间间隔设置为100 ms,如果FS在UI线程上创建,则可能需要序列化调用。