2011-08-08 4 views
0

Je veux envoyer des données au serveur lorsque vous fermez l'applicationappel de sortie silverlight un service Web

public App() 
     { 
      this.Startup += this.Application_Startup; 
      this.Exit += this.Application_Exit; 
      this.UnhandledException += this.Application_UnhandledException; 
      InitializeComponent(); 
     } 

private void Application_Exit(object sender, EventArgs e) 
     { 
      ClientReverse.UserExitGameAsync((Guid)Login); 
     } 

Serveur:

public void UserExitGame(Guid UserGuid) 
     { 
      Games.Games.ExitUserGames(UserGuid); 
     } 

mais le côté serveur est pas satisfait.

Répondre

1

Il est déjà trop tard lorsque vous atteignez l'événement ApplicationExit.

J'ai vu Javascript qui reste sur une page jusqu'à confirmation (Stack Overflow le fait beaucoup). Vous souhaiterez peut-être modifier une version de ce Javascript qui renvoie un message à l'application Silverlight avant qu'elle n'autorise la fermeture de la page.

L'appel des méthodes Silverlight à partir de JS est facile (vous pouvez simplement exposer les méthodes SL à JS avec l'attribut [Scriptable]).

+0

depuis que silverlight appelle le WCF, pourquoi ne pas simplement appeler le onbeforunload dans le HTML et appeler avec ajax le WCF et pas sur silverlight? – Rumplin

+1

@Rumplin: Cela serait également valable, mais j'ai vu beaucoup d'histoires sur 'onbeforeunload' ne fonctionnant pas correctement sur tous les navigateurs. L'opéra ne le tire apparemment pas du tout. –

+0

Eh bien, je ne le savais pas parce que je travaille principalement dans des environnements fermés (intranet) avec IE et Silverlight. Merci pour le conseil. – Rumplin