我正在創建我的第一個Windows應用商店應用程序,並且在啓動期間我還有幾個Web服務調用,並且還定期通過該應用程序。但是我注意到,當我因爲網絡服務調用而無法訪問互聯網時,我的應用程序將開始/崩潰或關閉。我希望我的應用程序能夠以正常的方式啓動一些初始數據,即使在沒有互聯網訪問的情況下也是正常的。我從webservice獲得的數據主要是我在各種文本框和圖表中顯示的天氣數據。當沒有互聯網時,Windows商店應用程序崩潰
下面的代碼顯示了我的擴展閃屏中的web服務調用。
public sealed partial class ExtendedSplashScreen : Page
{
//parameterItem max1DayAgo = new parameterItem();
//parameterItem min1DayAgo = new parameterItem();
public ExtendedSplashScreen()
{
this.InitializeComponent();
}
/// <summary>
/// Invoked when this page is about to be displayed in a Frame.
/// </summary>
/// <param name="e">Event data that describes how this page was reached. The Parameter
/// property is typically used to configure the page.</param>
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
string[] periodSelector = { "1DayAgo", "1WeekAgo", "1MonthAgo" };
string[] modeSelector = { "max", "min" };
string[] parameterSelector = { "umtTemp1", "umtWindSpeed", "umtAdjBaromPress", "umtRainRate" };
//Create a webservice object
ServiceReference.WebServiceSoapClient webServiceObj = new ServiceReference.WebServiceSoapClient();
//First we create an object that holds max data for yesterday
var getMax1DayAgoObj = await webServiceObj.GetSelectedMaxMinDataAsync(parameterSelector, periodSelector[0], modeSelector[0]);
//create an object that holds min data for yesterday
var getMin1DayAgoObj = await webServiceObj.GetSelectedMaxMinDataAsync(parameterSelector, periodSelector[0], modeSelector[1]);
//Save arrayOfValue and arrayOfUnit to a parameterItem object. these objects are created during startup
// and the can be accessed and updated by all methods in this page later we will see that maxMinButton_Click method
//for the maxMinButton will use these data
//create an object that holds max data for last week
var getMax1WekAgoObj = await webServiceObj.GetSelectedMaxMinDataAsync(parameterSelector, periodSelector[1], modeSelector[0]);
//create an object that holds min data for last week
var getMin1WekAgoObj = await webServiceObj.GetSelectedMaxMinDataAsync(parameterSelector, periodSelector[1], modeSelector[1]);
//create an object that holds max data for last month
var getMax1MonthAgoObj = await webServiceObj.GetSelectedMaxMinDataAsync(parameterSelector, periodSelector[2], modeSelector[0]);
//create an object that holds min data for last month
var getMin1MonthAgoObj = await webServiceObj.GetSelectedMaxMinDataAsync(parameterSelector, periodSelector[2], modeSelector[1]);
(App.Current as App).max1DayAgo.arrayOfValue = getMax1DayAgoObj.arrayOfValue;
(App.Current as App).max1DayAgo.arrayOfUnit = getMax1DayAgoObj.arrayOfUnit;
(App.Current as App).min1DayAgo.arrayOfValue = getMin1DayAgoObj.arrayOfValue;
(App.Current as App).min1DayAgo.arrayOfUnit = getMin1DayAgoObj.arrayOfUnit;
(App.Current as App).max1WeekAgo.arrayOfValue = getMax1WekAgoObj.arrayOfValue;
(App.Current as App).max1WeekAgo.arrayOfUnit = getMax1WekAgoObj.arrayOfUnit;
(App.Current as App).min1WeekAgo.arrayOfValue = getMin1WekAgoObj.arrayOfValue;
(App.Current as App).min1WeekAgo.arrayOfUnit = getMin1WekAgoObj.arrayOfUnit;
(App.Current as App).max1MonthAgo.arrayOfValue = getMax1MonthAgoObj.arrayOfValue;
(App.Current as App).max1MonthAgo.arrayOfUnit = getMax1MonthAgoObj.arrayOfUnit;
(App.Current as App).min1MonthAgo.arrayOfValue = getMin1MonthAgoObj.arrayOfValue;
(App.Current as App).min1MonthAgo.arrayOfUnit = getMin1MonthAgoObj.arrayOfUnit;
string[] startupData = new string[13];
startupData[0] = " " + (App.Current as App).max1DayAgo.arrayOfValue[0] + " " + (App.Current as App).max1DayAgo.arrayOfUnit[0]; // maxTemp
startupData[1] = " " + (App.Current as App).max1DayAgo.arrayOfValue[1] + " " + (App.Current as App).max1DayAgo.arrayOfUnit[1]; // maxWindSped
startupData[2] = " " + (App.Current as App).max1DayAgo.arrayOfValue[2] + " " + (App.Current as App).max1DayAgo.arrayOfUnit[2]; // maxAirPressure
startupData[3] = " " + (App.Current as App).max1DayAgo.arrayOfValue[3] + " " + (App.Current as App).max1DayAgo.arrayOfUnit[3];// maxRainfall
startupData[4] = " " + (App.Current as App).min1DayAgo.arrayOfValue[0] + " " + (App.Current as App).min1DayAgo.arrayOfUnit[0]; // minTemp
startupData[5] = " " + (App.Current as App).min1DayAgo.arrayOfValue[1] + " " + (App.Current as App).min1DayAgo.arrayOfUnit[1];// minWindSped
startupData[6] = " " + (App.Current as App).min1DayAgo.arrayOfValue[2] + " " + (App.Current as App).min1DayAgo.arrayOfUnit[2];// minAirPressure
startupData[7] = " " + (App.Current as App).min1DayAgo.arrayOfValue[3] + " " + (App.Current as App).min1DayAgo.arrayOfUnit[3];// minRainfall
// Main fields
// ServiceReference.WebServiceSoapClient webServiceObj = new ServiceReference.WebServiceSoapClient();
var getLatestTempObj = await webServiceObj.GetLatestDataAsync("umtTemp1");
var getLatestWindObj = await webServiceObj.GetLatestDataAsync("umtWindSpeed");
var getLatestwindDirObj = await webServiceObj.GetLatestDataAsync("umtAdjWinDir");
var getLatestairPressureObj = await webServiceObj.GetLatestDataAsync("umtAdjBaromPress");
startupData[8] = " " + getLatestTempObj.Value + " " + getLatestTempObj.Unit;//temperatureMainTxtBlock.Text
startupData[9] = " " + getLatestWindObj.Value + " " + getLatestWindObj.Unit;//temperatureMainTxtBlock.Text
startupData[10] = "" + getLatestwindDirObj.Value; //temperatureMainTxtBlock.Text
startupData[11] = " " + getLatestairPressureObj.Value + " " + getLatestairPressureObj.Unit;//temperatureMainTxtBlock.Text
startupData[12] = "Last update: " + getLatestwindDirObj.Timestamp;//temperatureMainTxtBlock.Text
//save the startup data to the global variables
(App.Current as App).NavigateData = startupData;
this.Frame.SetNavigationState(e.Parameter as string);
this.Frame.Navigate(typeof(MainPage));
}
}
你有沒有嘗試過把'try {} catch {}'塊中崩潰的代碼?您也可以先檢查是否有連接,但Windows中似乎有一個連接可用的錯誤,但操作系統認爲它不是。 – Nolonar