据我所知这是不可能的。当您尝试在备份准备就绪的情况下运行备份时,会出现BackupInProgressException。这样,您就知道备份正在进行中。
然而,这并不是一个真正的通知,在很多情况下也不完整。
然而,有一个复杂的工作。您可以为备份过程提供自己的存储实现:
IStorage myStorage=。。。;
容器.Ext().备份(myStorage备份.db4o.bak“);
这样,您就可以实现一个包装器存储来通知您。您将构建一个实现IStorage接口的装饰器。返回的IBin实例会在关闭时通知您。当备份在IBin实例上调用close方法时,您就知道它已经完成了。
这是一份草案。(不是测试什么的)。StorageDecorator是IStorage decorators的基类,包含在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");