Позвоните в веб-сервис, когда выйдет Silverlight - PullRequest
4 голосов
/ 12 июля 2010

Как я могу позвонить в веб-сервис при выходе Silverlight?Мне нужно отправить обновление на сервер при выходе из Silverlight.

Ответы [ 6 ]

3 голосов
/ 12 июля 2010

Добавить обработчик события для Application.Exit события.Вызовите WebService в этом обработчике.Код XAML / выглядит примерно так:

<Application 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Class="SilverlightApplication.App"
    Exit="App_Exit">

</Application>

И

public partial class App : Application
{
    private void App_Exit(object sender, EventArgs e)
    {
        // Code to call WebService goes here.
    }
}
2 голосов
/ 18 июля 2010

У меня было приложение, которое требовало сохранения информации перед закрытием.Я использовал javascript на странице, содержащей элемент управления silverlight.

Javascript и использование

<script type="text/javascript">
     var blocking = true;

     function pageUnloading() {
         var control = document.getElementById("Xaml1");
         control.content.Page.FinalSave();
         while (blocking)
             alert('Saving User Information');
     }

     function allowClose() {
         blocking = false;
     }
</script>


<body onbeforeunload="pageUnloading();">

</body>

и app.xaml.cs

public partial class App : Application
{

     [ScriptableMember()]
     public void FinalSave()
     {

        srTL.TrueLinkClient proxy = new CSRM3.srTL.TrueLinkClient();
        proxy.DeleteAllUserActionsCompleted += (sender, e) =>
            {
                HtmlPage.Window.CreateInstance("allowClose");


            };
        proxy.DeleteAllUserActionsAsync(ApplicationUser.UserName);

     }

}
2 голосов
/ 13 июля 2010

Невозможно сделать веб-запрос на завершение работы приложения в Silverlight.

1 голос
/ 04 июля 2012

Вам необходимо использовать JavaScript. Проверьте эту ссылку: http://danielvaughan.orpius.com/post/Calling-Web-Services-from-Silverlight-after-the-Browser-has-closed.aspx

0 голосов
/ 17 ноября 2013

Да, просто позвоните в веб-службу и не ждите возвращаемого значения ... потому что оно никогда не придетне делайте этого:

    private async void Application_Exit(object sender, EventArgs e)
    {
        // Tell DBSERVER_V14 pipe we have gone away
        var status = await SmartNibby_V13.connect_disconnect_async(MainPage.username, MainPage.website, false);
        if (status)
        {
            Console.WriteLine(status);
        }
    }

, потому что у вас никогда не будет значения «status» для проверки.

0 голосов
/ 13 июля 2010

См. Комментарии к ответу Джастина Нисснера: вы не можете вернуть возвращаемое значение. Это может быть хорошо для вас, если служба, которую вы вызываете, не является критичной (потому что, скажем, она просто собирает некоторую статистику использования). Если вам нужно иметь возвращаемое значение в любом случае, и вы ожидаете, что приложение SL будет использоваться несколько раз, вы можете написать сувенир в IsolatedStorage (это синхронная операция) и опубликовать его на сервере, когда приложение запускает приложение. в следующий раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...