Bonjour,
De façon résumée, je souhaite sérialiser des actions contenues dans une classe pour une exécution différée de celles-ci (voir le contexte et l'exemple plus bas pour ceux qui souhaitent).
Est-ce prévu par le framework? Un lien? Une idée? Une remarque?
Je suis preneur!
Merci d'avance.
Contexte :
Une application client/serveur implémentant le remoting permet d'envoyer des actions à des clients.
Interface :
public interface IRemoteOperation
et les opérations de type :
public class RemoteOperation : MarshalByRefObject, RemotingInterfaces.IRemoteOperation
Je peux par exemple envoyer une action au pc "pcName" sur le port "port' permettant de lancer un process :
1 2 3 4 5 6 7 8 9 10 11 12
|
IRemoteOperation op = (RemotingInterfaces.IRemoteOperation)Activator.GetObject(
typeof(RemotingInterfaces.IRemoteOperation),
"tcp://" + pcName + ":"+port+"/RemoteOperation");
if (op.ProcessLaunch(tbx_ProcessToLaunch.Text,this.cbx_UseShellExecute.Checked,this.cbx_Impersonate.Checked))
{
//OK action
}
else
{
//failure action
} |
la définition de ProcessLaunch étant :
1 2
|
bool ProcessLaunch(string processToLaunch, bool useShellExecute, bool mustImpersonate); |
et renvoyant un booléen représentant que l'action s'est produite correctement sur le client.
Lorsque le client n'est pas disponible (pc éteint),
op.ProcessLaunch() lance une exception et l'action n'est évidemment pas exécutée. A ce moment, il faudrait que l'action n'ayant pas abouti se mette en attente (dans un fichier ou une DB) jusqu'à ce que le client exécute l'action.
Mon problème : je ne sais pas comment sérialiser une méthode et l'exécuter en différé.
points d'attention : nombre variable de paramètres dans les fonctions.
Encore merci.
Partager