想要在C#中经过一段时间后停止FileSystemWatcher()

时间:2013-04-29 11:21:14

标签: c# filesystemwatcher

我的C#项目中有一个要求。我必须在一段时间内扫描文件,并在几小时后停止扫描。为了连续观看文件,我使用了FileSystemWatcher()类,如果重命名,创建,删除任何文件,此类将连续查看文件。现在,我的要求是在一段时间后停止扫描文件。我启动了StartWatcher()方法来启动FileSystemWatcher()课程。我有一段时间。如何在一段时间后调用stopWatcher()方法。

任何快速的想法??

m_monitor.StartWatcher();

// code in C# so that I can call StopWatcher after some period of time.

m_monitor.StopWatcher();

2 个答案:

答案 0 :(得分:1)

解决这个问题的方法不止一种。一种简单的方法是使用Timer之类的:

private Timer myTimer = null;
public void YourMethod()
{
  m_monitor.StartWatcher();
  myTimer = new Timer(60000); // 60 seconds
  myTimer.AutoReset = false; // only trigger once
  myTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
  myTimer.Enabled = true;
}

private static void OnTimedEvent(object source, ElapsedEventArgs e) 
{
  m_monitor.StopWatcher();
}

没有测试过,但这会让你朝着正确的方向前进。

答案 1 :(得分:0)

您可以使用TPL的延迟。

public async void StartFileSystemWatcher()
        {
            m_monitor.StartWatcher();
            await Task.Delay(Timeout);
            m_monitor.StopWatcher();
        }