2014-03-25 73 views
0

如何運行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()方法將運行完成

如何解決?

+0

您在等待Utilities.sendData(parmater,data)的輸出窗口中沒有錯誤? – MatDev8

+0

是的,沒有錯誤,但如果我在應用程序啓動時放置onEndSession()方法,則此方法將運行完成。 – user3409461

回答

2

由於應用程序必須在調用之前不會退出完成後,使用同步調用,而不是異步之一:

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

請注意OS殺死之前,你有隻有幾秒鐘內你應用程序,這意味着如果手機連接性低,您的網絡通話可能會失敗。您可能希望找到某種方式在應用程序仍在運行時執行該處理,而不是等待事件。

相關問題