2011-08-08 3 views
0

난 당신이 응용 프로그램을실버 종료 호출

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); 
     } 

서버를 닫을 때 서버에 데이터를 전송하려는 웹 서비스 :

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

하지만 서버 측을 만족하지 않습니다.

답변

1

ApplicationExit 이벤트가 발생하면 이미 너무 늦었습니다.

확인 될 때까지 웹 페이지에서 계속되는 자바 스크립트를 보았습니다 (스택 오버플로가 많이 발생 함). 페이지 닫기를 허용하기 전에 메시지를 Silverlight 앱으로 다시 보내는 자바 스크립트 버전을 수정할 수 있습니다.

JS에서 Silverlight 메서드를 호출하는 것은 쉽습니다 ([Scriptable] 특성을 사용하여 SL 메서드를 JS에 간단하게 표시 할 수 있음).

+0

silverlight가 WCF를 호출하고 있기 때문에 HTML에서 onbeforunload를 호출하고 실버 라이트가 아닌 AJax와 통화해야하는 이유는 무엇입니까? – Rumplin

+1

@Rumplin : 그럴 수도 있지만, 모든 브라우저에서 제대로 작동하지 않는 onbeforeunload에 대한 많은 이야기를 보았습니다. 오페라는 분명히 그것을 전혀 발사하지 않습니다. –

+0

IE와 Silverlight를 사용하여 주로 닫힌 환경 (인트라넷)에서 작업하기 때문에 잘 알지 못했습니다. 팁 고마워. – Rumplin