Сначала мое маленькое приложение WPF скопирует файлы x, и пользователь увидит это на индикаторе выполнения.
Я только нахожу способы сделать это с помощью кнопки, команда которой привязана к виртуальной машине.
Нет ли способа вызвать все это при запуске без использования кнопки?
Edit:
Это пример, как я пытался:
public ViewModelDfsync()
{
this.instigateWorkCommand =
new RelayCommand(o => this.worker.RunWorkerAsync(),
o => !this.worker.IsBusy);
this.worker = new BackgroundWorker();
this.worker.DoWork += this.DoWork;
this.worker.ProgressChanged += this.ProgressChanged;
}
private readonly BackgroundWorker worker;
private readonly RelayCommand instigateWorkCommand;
// your UI binds to this command in order to kick off the work
public RelayCommand InstigateWorkCommand
{
get { return this.instigateWorkCommand; }
}
private void DoWork(object sender, DoWorkEventArgs e)
{
// do time-consuming work here, calling ReportProgress as and when you can
var files = Directory.GetFiles(@"C:\files");
var destDir = @"C:\files\newDir";
foreach (var file in files)
{
FileInfo fileName = new FileInfo(file);
FileInfo destFile = new FileInfo(Path.Combine(destDir, fileName.Name));
if (destFile.Exists)
{
if (fileName.LastWriteTime > destFile.LastWriteTime)
{
fileName.CopyTo(destFile.FullName, true);
worker.ReportProgress(CurrentProgress);
}
}
else
{
fileName.CopyTo(destFile.FullName);
worker.ReportProgress(CurrentProgress);
}
}
}
private void ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.CurrentProgress = e.ProgressPercentage;
}
private int currentProgress;
public int CurrentProgress
{
get => currentProgress;
private set
{
if (currentProgress != value)
{
currentProgress = value;
RaisePropertyChanged("CurrentProgress");
}
}
}
это мой прогресс в xaml:
<ProgressBar Minimum="0" Maximum="100" Value="{Binding CurrentProgress, Mode=OneWay}" Height="20"/>