2008-11-30 8 views

Répondre

2

Ceci devrait pouvoir être implémenté en utilisant des transactions (commit/rollback) ou annuler. Si vous concevez vos cours et vos opérations correctement, cela fonctionnera, cela exigera du travail et de la discipline en utilisant les cours bien sûr. Vous devrez également faire attention aux exceptions.

Le System.Transactions namespace (comme Rune suggéré) semble être un bon candidat, ou au moins un bon point de départ.

1

Si je vous comprends bien (et la question est assez vague, donc je ne suis pas sûr de cela du tout), puis Windows Workflow Foundation a certainement cette capacité. Cependant, c'est presque certainement exagéré pour ce que vous demandez.


Bon, vous avez ajouté un lien qui explique mieux ce que vous voulez dire par checkpointing.

Dans cet esprit, .Net n'a rien intégré pour supporter cela directement. Cependant, tout ce qui utilise une machine d'état où la machine d'état peut être conservée, peut être inspecté/validé, et est transactionnel a ce genre de chose naturellement intégré. Le WWF en est un exemple.

0

Étant donné le lien de wikipedia, je peux vous dire .NET/CLR ne supporte pas cela. Ce qui rend cela impossible est dû au fait que .NET ne vous permet pas d'inspecter de modifier la pile de l'application qui n'est pas possible en raison de la sécurité intégrée dans .NET.

+0

Il est possible d'imiter la fonctionnalité en écrivant l'application d'une manière spéciale, de sorte qu'il peut enregistrer l'état approprié nécessaire pour commencer à partir de ce point plus tard, mais ce n'est en aucun cas quelque chose que vous pouvez simplement connecter à l'application vous avez terminé. –

+0

Ce que vous expliquez n'est pas vraiment ce que suggère le lien wikipedia. De toute façon, si vous pensez que c'est acceptable, c'est bien. Personnellement, je ne l'essaierais pas, en raison de centaines de problèmes qui pourraient surgir (à moins de traiter avec une petite application comme dragueur de mines). – leppie

1

Je ne pense pas qu'il existe un support intégré pour cela, mais il devrait être relativement facile de vous construire. En supposant que vous avez une classe d'application centrale qui stocke votre état d'application, ou au moins la partie utilisée dans le point de contrôle. Vous pouvez ensuite utiliser la sérialisation pour stocker l'état de votre application lorsque cela est nécessaire. En outre, il serait facile de stocker les instantanés dans une base de données d'un fichier si vous en aviez besoin plus tard. Mais cela vous obligerait à écrire votre propre bibliothèque pour le soutenir. Au moment où j'écris cela, je commence à sentir qu'il doit y avoir un certain soutien pour cela dans le cadre. Regardez l'espace de noms System.Transactions par exemple.

Questions connexes