美文网首页
c#使用FileSystemWatcher的一些坑

c#使用FileSystemWatcher的一些坑

作者: Magna | 来源:发表于2020-07-11 21:58 被阅读0次

    1.1依赖引用:

    using system.IO
    

    1.2基础代码(example):

    //这个模块可以在onLoad里实现
    FileSystemWatcher WatcherDemo = new FileSystemWatcher();
    WatcherDemo.Path = ""  
    xmlWatcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.LastAccess;
    //以上为监控的要素,还有其他,可以自己根据提示看一下
    
    xmlWatcher.Created += new FileSystemEventHandler(this.fileChangedAction);
    //fileChangedAction是一个监控到文件发生改变后自定义的事件,在本文1.3中实现
    xmlWatcher.Changed += new FileSystemEventHandler(this.fileChangedAction);
    
    
    xmlWatcher.EnableRaisingEvents = true; 
    
    //一个线程只能监控一个文件夹
    //但可以监控文件夹和子文件夹,所以这是一个实现多文件夹监控的思路
    //要么重开新线程
    

    1.3拦截到符合条件的动作后的函数

    string lastModify = "";  //设置了一个全局开关,因为文件监控事件会出现两次事件
    
    public void fileChangedAction(object source,FileSystemEventArgs e) {
                string nowModify = DateTime.Now.ToLongTimeString();
                
                if (nowModify != lastModify)
                {
                    richTextBox1.AppendText("发生变化了" + DateTime.Now.ToLongTimeString() + "\n");
                    //以上部分要生效,设计跨线程调用,在本文的1.4设置
                    ReadXmlAndSaveToMongo useObject = new ReadXmlAndSaveToMongo();
                    //这是一个自定义的类,实现需要的操作
                    try
                    {
                        useObject.ReadXml();
                    }
                    catch { 
    
                    }
                    
                    lastModify = nowModify;
                }
                else {
                    lastModify = nowModify;
                }
    
            }
    

    1.4 跨线程调用开关

    public Form1()
            {
                InitializeComponent();
                CheckForIllegalCrossThreadCalls = false;    //允许跨线程调用
            }
    

    相关文章

      网友评论

          本文标题:c#使用FileSystemWatcher的一些坑

          本文链接:https://www.haomeiwen.com/subject/nusbcktx.html