Насколько я знаю, это невозможно. (Когда вы пытаетесь запустить резервное копирование, пока все уже готово, вы получаете исключение BackupInProgressException. Таким образом, вы знаете, что все уже готово к резервному копированию.
.
Однако это не реальное уведомление и не usfull во многих ситуациях
Однако есть комплекс обходные Вы можете предоставить свою собственное хранение-реализацию для резервного копирования-процесса:.
IStorage MyStorage = ...; container.Ext(). Резервное копирование (myStorage, "backup.db4o.bak");
Таким образом вы можете реализовать хранилище-обертку, которое уведомляет вас. Вы строите декоратор, который реализует интерфейс IStorage. IBin-экземпляры, которые возвращаются, затем уведомляют вас при закрытии. Когда резервная копия вызывает метод close-methon на экземпляре IBin, вы знаете, что это сделано.
Вот проект, как это делается. (Не тест или что-то еще). StorageDecorator является базовым классом для декодеров IStorage, который включен в db4o.
class NotificationStorageDecorator : StorageDecorator
{
public NotificationStorageDecorator(IStorage storage) : base(storage)
{
}
public NotificationStorageDecorator() : this(new FileStorage()){}
protected override IBin Decorate(BinConfiguration config, IBin bin)
{
return new MyNotificationBin(bin);
}
class MyNotificationBin : BinDecorator
{
public MyNotificationBin(IBin bin) : base(bin)
{
}
public override void Close()
{
base.Close();
// Implement here your notification-mechanism
// For example with events etc
Console.Out.WriteLine("Backup-done");
}
}
}
// затем использовать его
var notifactionStorage = new NotificationStorageDecorator();
container.Ext().Backup(notifactionStorage,"backup.db4o.back");
+1 @Gamlor я считаю, что это очень разумное работу вокруг. Если никто больше не придет с чем-то, я обязательно попробую это. – eglasius
@eglasius У вас были какие-то успехи в этом? У нас все еще есть унаследованная система и повысить надежность, которую нам нужно знать о готовых резервных копиях. –
Прошу прощения, но в конце мы никогда не возвращались, чтобы попробовать :( – eglasius