/// <summary> /// ファイルのチェックスレッド /// </summary> public async void FileCheckTask() { while (true) { // 1秒待ち合わせ(キャンセル受付) if (stopping) { return; } await Task.Delay(1000); if (stopping) { return; } // 新規ファイルが来ていない場合は何もしない if (checkFilePathList.Count == 0) { continue; } var addFilePathList = new List <string>(); var delCheckFilePathList = new List <string>(); lock (lockObj) { foreach (string filePath in checkFilePathList) { // 書き込みオープンで開けるか(ほかソフトの書き込みがおわったかチェック) if (CanWrite(filePath)) { addFilePathList.Add(filePath); delCheckFilePathList.Add(filePath); LogWindow.LogMessage($"監視フォルダ内のファイルが変換可能になりました。 File={filePath}", LogWindow.MessageType.Information); } } // 追加可能となったものはチェック対象から削除 delCheckFilePathList.ForEach(item => checkFilePathList.Remove(item)); } // ファイル追加イベント発行 if (addFilePathList.Count > 0) { var e = new FileAddedEventArgs { FileList = addFilePathList }; OnFileAdded(e); } } }
/// <summary> /// 指定フォルダのファイル追加処理 /// </summary> /// <param name="path"></param> /// <param name="filter"></param> public async Task AddFiles(string path, string filter) { await Task.Run(() => { IEnumerable <string> filePaths = Directory.EnumerateFiles(path, string.IsNullOrWhiteSpace(filter) ? "*.*" : filter, SearchOption.TopDirectoryOnly); // ファイル追加イベント発行 if (filePaths.Count() > 0) { var e = new FileAddedEventArgs { FileList = filePaths.ToList() }; OnFileAdded(e); } }); }
/// <summary> /// イベントを発生させる /// </summary> /// <param name="e"></param> protected virtual void OnFileAdded(FileAddedEventArgs e) { FileAddedEvent?.Invoke(this, e); }