コード例 #1
0
        private void Subscribe_Changed(object sender, FileSystemEventArgs e)
        {
            try
            {
                Thread.Sleep(1000);

                FileInfo fileInfo = new FileInfo(e.FullPath);

                FileSubscriber subscriber = _listSubscriber.First(f => f.Key.FullName == fileInfo.FullName).Value;

                string   tempFileName = DirFile.GetTempFile();
                FileInfo fileInfoTemp = fileInfo.CopyTo(tempFileName);
                string   fileName     = fileInfo.Name;
                string   extension    = fileInfo.Extension;
                fileInfo = null;

                Task.Run(() =>
                {
                    lock (_locker)
                    {
                        using (Versions versions = new Versions()
                        {
                            SubscriberInfo = fileInfoTemp,
                            Subscriber = subscriber,
                            FileName = fileName,
                            Extension = extension
                        })
                        {
                            versions.CreateNewVersionFile();
                        }

                        _callUpdate.NeedNotified = true;
                        _callUpdate.Call(subscriber);

                        DirFile.DeleteFile(fileInfoTemp);

                        fileInfoTemp = null;
                    }
                });
            }
            catch (Exception ex)
            {
                Errors.Save(ex);
            }
        }
コード例 #2
0
        internal void Subscribe(FileSubscriber subscriber, bool notified = true)
        {
            if (subscriber.Checked &&
                !String.IsNullOrWhiteSpace(subscriber.Path))
            {
                if (_listWather.FirstOrDefault(f => f.Key == subscriber).Key != null)
                {
                    return;
                }

                FileInfo fileInfo = new FileInfo(subscriber.Path);

                FileSystemWatcher watcher = new FileSystemWatcher(fileInfo.DirectoryName, fileInfo.Name)
                {
                    NotifyFilter = NotifyFilters.LastWrite
                };

                _listSubscriber.Add(fileInfo, subscriber);

                watcher.Changed            += Subscribe_Changed;
                watcher.EnableRaisingEvents = true;

                _listWather.Add(subscriber, watcher);

                using (Versions versions = new Versions()
                {
                    SubscriberInfo = fileInfo,
                    Subscriber = subscriber
                })
                {
                    versions.CreateDirectoryVersion();
                }
                _callUpdate.NeedNotified = notified;
                _callUpdate.Call(subscriber);
            }
        }