2011-06-13 15 views
1

사용자가 객체를 생성, 편집, 삭제할 수있는 실버 라이트 애플리케이션에서 작업 중입니다. 변경 사항은 4 분마다 처리되는 대기열에 저장됩니다. 처리가 완료되면 비동기 웹 메서드 호출을 통해 업데이트가 전송되어 한 번에 하나씩 SQL 데이터베이스에 저장됩니다. 첫 번째 업데이트가 완료되면 다음 업데이트가 시작됩니다.
사용자가 변경 한 다음 4 분 타이머가 만료되기 전에 브라우저 앱을 종료하면 문제가 발생합니다. 현재 변경 사항이 손실됩니다.앱 종료시 webservice를 객체로 업데이트

필자가 수행하기 전에 작업 한 사람이 작성한 Ive는 공장이 종료 될 때 업데이트 프로세스를 시작하려고 시도하고 Dispose 및 Finalize 메서드를 탐색했지만 비동기 특성으로 인해 작동하지 않습니다. 웹 서비스 호출 필요한 객체가 이미 삭제되었다는 오류가 발생합니다.

사용자가 웹 페이지를 닫거나 새로 고침하려고 할 때 웹 메소드를 사용하여 업데이트 큐에 데이터를 저장하는 방법을 찾고 있습니다. Im은 큐가 업데이트로 가득 차기를 기대하지 않습니다. 이 응용 프로그램은 대개 한 번에 여러 시간 동안 실행됩니다.

답변

1

자바 스크립트를 사용하여 페이지를 떠나는 사용자를 중지 할 수 있습니다. StackOverflow가 그것을 수행합니다 (대답 편집 및 페이지 남기기). 그것은 페이지 탐색뿐만 아니라 브라우저 닫기에서도 작동합니다. Javascript에서 대기중인 데이터를 저장하도록 Silverlight 앱에 알릴 수도 있습니다 (Silverlight 지원 노출 방법은 Javascript로).

Q. 4 분마다 저장하는 것은 Silverlight 응용 프로그램에서 약간 이상한 동작입니다. 나는 그것이 한 번에 한 명의 사용자에 의해서만 실행되도록 설계되었다고 생각합니다. 더 자주 절약하는 것을 제한하는 것은 무엇입니까?

+0

자바 스크립트 인터셉트가 멋지게 작동합니다. 예를 발견했습니다. [http://blogs.silverlight.net/blogs/msnow/archive/2008/07/08/tip-of-the-day-15-communicating-between-javascript-amp-silverlight .aspx) 그리고 그것의 정말 잘 작동합니다. 업데이트가 필요한 데이터가있는 경우 Leave 또는 Stay 옵션이있는 팝업이 표시되고 모든 대기열이 비어 있으면 팝업이 표시되지 않습니다. 언로드 화면을 추가하여 곧 종료 할 때 사용자에게 알립니다. – Josh