private async Task OnChanged(string fullPath, WatcherChangeTypes changeType, bool isAFolder)
        {
            _logger.LogInformation($"{nameof(OnChanged)}: Handling change = {changeType} for = {fullPath} which is a folder = {isAFolder}");
            switch (changeType)
            {
            case WatcherChangeTypes.Deleted:
                if (OnFileDeleted != null)
                {
                    await OnFileDeleted.Invoke(fullPath, isAFolder);
                }
                break;

            case WatcherChangeTypes.Changed:
                if (OnFileChanged != null)
                {
                    await OnFileChanged.Invoke(fullPath, isAFolder);
                }
                break;

            case WatcherChangeTypes.Created:
                if (OnFileCreated != null)
                {
                    await OnFileCreated.Invoke(fullPath, isAFolder);
                }
                break;
            }
        }
Exemple #2
0
 private void OnWatcherFileChanged(object source, FileSystemEventArgs e)
 {
     log.Info($"File: {e.FullPath} {e.ChangeType}");
     if (e.ChangeType == WatcherChangeTypes.Deleted)
     {
         var status = StatusList.FirstOrDefault(s => s.SourceFile == e.FullPath);
         if (status != null && status.Status == StatusEnum.NotSynched)
         {
             StatusList.Remove(status);
             OnFileDeleted?.Invoke(this, e);
         }
     }
     else if (e.ChangeType == WatcherChangeTypes.Created)
     {
         OnFileAdded?.Invoke(this, e);
     }
 }
Exemple #3
0
        public FileTransferManager()
        {
            _watcher          = new FileSystemWatcher(Preferences.SyncDirectory);
            _watcher.Created += (o, e) => OnFileAdded?.Invoke(this, e.FullPath);
            _watcher.Renamed += (o, e) => OnFileAdded?.Invoke(this, e.FullPath);
            _watcher.Deleted += (o, e) => OnFileDeleted?.Invoke(this, e.FullPath);
            Task.Run(async() =>
            {
                while (true)
                {
                    try
                    {
                        _watcher.EnableRaisingEvents = true;
                        return;
                    }
                    catch { }
                    await Task.Delay(500);
                    _watcher.Path = Preferences.SyncDirectory;
                }
            });

            _manager = BackgroundCopyManager.Connect();

            if (ConfigurationManager.AppSettings.AllKeys.Contains(Preferences.FileServerUriKey))
            {
                Preferences.FileServerUri = ConfigurationManager.AppSettings[Preferences.FileServerUriKey];
            }

            _downloadOperations = new ObservableDictionary <string, ITransferOperation>();
            _uploadOperations   = new ObservableDictionary <string, ITransferOperation>();
            TransferOperations  = new ConcatenatedObservableDictionary <string, ITransferOperation>(_downloadOperations, _uploadOperations);

            _timerTransfer = new DispatcherTimer
            {
                Interval = TimeSpan.FromMilliseconds(500)
            };
            _timerTransfer.Tick += TimerTransfer_Tick;
            _timerTransfer.Start();
        }
Exemple #4
0
 private void FileSystemWatcher_Deleted(object sender, FileSystemEventArgs e)
 {
     OnFileDeleted?.Invoke(sender, e);
 }