app关闭时如何运行方法?

时间:2014-03-25 09:33:22

标签: c# windows-phone-8

如何运行onEndSession完成?

private void Application_Closing(object sender, ClosingEventArgs e)
{
    onEndSession ();
}

async public static void onEndSession()
{
    try
    {
        if (Utilities.isInternet())
        {
            string data = "...";
            string parmater = "...;
            string response = await Utilities.sendData(parmater, data);
            JObject _object = JObject.Parse(response);
            string sucess = (string)_object["success"];
            if (sucess == "1")
                delObject();
        }
    }
    catch (Exception ex)
    {
        string temp = ex.Message;
    }
}

当关闭onEndSession()的应用程序未完成时,

string response = await Utilities.sendData(parmater, data)

运行完成然后不继续运行

JObject _object = JObject.Parse(response);
.......

但是当应用运行时,onEndSession()方法将完成

如何解决方案?

1 个答案:

答案 0 :(得分:2)

由于应用程序在调用完成之前不能退出,因此请使用同步调用而不是异步调用:

string response = Utilities.sendData(parmater, data).Result;

请注意,在操作系统杀死您的应用之前,您只有几秒钟,这意味着如果手机连接不足,您的网络通话可能会失败。您可能希望在应用程序仍处于活动状态时找到一些方法来执行该处理,而不是等待Closing事件。