Имеем класс, в котором при проверке файла на "занятость" отбрасывается событие, в которое передается некое кол-во параметров. Делаю вот так:
public class Baza
{
public string Directory;
public string LastDir;
private string[] ListFiles = null;
private List<string> FilesNotBussy = new List<string>();
private List<string> FilesBussy = new List<string>();
private string Pattern = null;
public delegate void FileCheck(string FileName, int Iteration, int Count);
public event FileCheck onCheck = delegate { };
public void BackUP() {
}
public string[] GetListFiles() {
return this.ListFiles;
}
private bool FileIsBusy(string file)
{
bool result = false;
try
{
using (var fs = File.Open(file, FileMode.Open, FileAccess.Read, FileShare.None))
{
result = false;
}
}
catch (Exception ex)
{
result = true;
}
return result;
}
public List<string> GetListFilesNotBussy()
{
return this.FilesNotBussy;
}
public List<string> GetListFilesBussy()
{
return FilesBussy;
}
public Baza(string Item, string Pattern = "*") {
Directory = Item;
LastDir = Item.GetLastDir();
this.Pattern = Pattern;
this.ListFiles = System.IO.Directory.GetFiles(Directory, Pattern, SearchOption.AllDirectories);
int i = 0;
foreach (string file in ListFiles)
{
onCheck( file, i, Count() );
if (FileIsBusy(file))
{
FilesBussy.Add(file);
}
else
{
FilesNotBussy.Add(file);
}
i++;
}
}
public int Count() {
return this.ListFiles.Count();
}
}
Объекты класса заполняются циклом в отдельном от потоке, в этом же цикле я и подписываюсь на это событие:
Item.onCheck += (fileName, iternation, Count) =>
{
Dispatcher.Invoke((Action)(delegate
{
this.CheckFile.Text = fileName;
this.CheckFileProgress.Maximum = Count;
this.CheckFileProgress.Value = i;
}));
Bases.Log(fileName + " " + iternation + " " + Count);
};
Результата нуль. Где я поступаю не правильно ?