C# 确定db4o备份何时完成
我如何知道db4o何时完成C# 确定db4o备份何时完成,c#,.net,db4o,C#,.net,Db4o,我如何知道db4o何时完成 Doc提到它在一个单独的线程中进行备份,但没有提到备份何时完成。该方法不接收任何回调。据我所知,这是不可能的=(。当您尝试在备份准备就绪的过程中运行备份时,您会得到一个BackupInProgressException。这样您就知道备份准备就绪了 然而,这不是一个真正的通知,在许多情况下也不是完整的 但是,这是一项复杂的工作。您可以为备份过程提供自己的存储实施: IStorage myStorage=。。。; container.Ext().Backup(myStor
Doc提到它在一个单独的线程中进行备份,但没有提到备份何时完成。该方法不接收任何回调。据我所知,这是不可能的=(。当您尝试在备份准备就绪的过程中运行备份时,您会得到一个BackupInProgressException。这样您就知道备份准备就绪了 然而,这不是一个真正的通知,在许多情况下也不是完整的 但是,这是一项复杂的工作。您可以为备份过程提供自己的存储实施: IStorage myStorage=。。。; container.Ext().Backup(myStorage,“Backup.db4o.bak”) 通过这种方式,您可以实现一个包装存储来通知您。您可以构建一个装饰器来实现IStorage接口。返回的IBin实例将在关闭时通知您。当备份调用IBin实例上的close方法时,您知道它已完成 这是一个如何完成的草案(不是testet或任何东西)。StorageDecorator是iStorageDecorators的基类,包含在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");
据我所知,这是不可能的=(。当你试图运行一个正在进行的准备就绪的备份时,你会得到一个BackupInProgressException。这样你就知道有一个正在进行的准备就绪的备份 然而,这不是一个真正的通知,在许多情况下也不是完整的 但是,这是一项复杂的工作。您可以为备份过程提供自己的存储实施: IStorage myStorage=。。。; container.Ext().Backup(myStorage,“Backup.db4o.bak”) 通过这种方式,您可以实现一个包装存储来通知您。您可以构建一个装饰器来实现IStorage接口。返回的IBin实例将在关闭时通知您。当备份调用IBin实例上的close方法时,您知道它已完成 这是一个如何完成的草案(不是testet或任何东西)。StorageDecorator是iStorageDecorators的基类,包含在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您在这方面取得了成功吗?我们仍然有一个遗留系统,为了提高可靠性,我们还需要了解已完成的备份。很抱歉,但最后,我们再也没有回来尝试这项工作:(+1@Gamlor)我觉得这是一个非常合理的解决方案。如果没有其他人提供,我一定会试试这个。@eglasius你在这方面成功了吗?我们仍然有一个遗留系统,为了提高可靠性,我们还需要了解已完成的备份。很抱歉,但最后,我们再也没有回来尝试这个:(