[英]Show MessageDialog from app.xaml.cs in Windows Store app
我試圖在失去互聯網連接時向用戶顯示消息
我在App.xaml.cs
上有此方法
static async void NetworkInformation_NetworkStatusChanged(object sender)
{
//Get the Internet connection profile
//ConnectionProfile connectionProfileInfo = null;
try
{
ConnectionProfile InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
if (InternetConnectionProfile == null)
{
ApplicationData.Current.LocalSettings.Values["INTERNET"] = false;
ShowBox("Internet Lost");
Frame rootFrame = Window.Current.Content as Frame;
rootFrame.Navigate(typeof(LoginPage));
}
else
{
ApplicationData.Current.LocalSettings.Values["INTERNET"] = true;
}
}
catch (Exception ex)
{
Debug.WriteLine("Unexpected exception occurred: " + ex.ToString());
}
}
還有另外一個
public async static void ShowBox(string msg)
{
try
{
await new MessageDialog(msg, "No Internet").ShowAsync();
}
catch (Exception e)
{
Debug.WriteLine(e.Message);
}
}
當我導致連接丟失(禁用我的互聯網連接)時,將調用ShowBox方法,並且我在其上收到此異常:
無效的窗口句柄。
必須從具有CoreWindow的線程中調用此API,或者必須已顯式設置了窗口。
有什么辦法可以顯示該事件的MessageDialog嗎?
Manuel Patrone的答案幾乎是正確的。 只是他的答案的小修正。
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
async() =>
{
MessageDialog msg= new MessageDialog("No Internet");
await msg.ShowAsync();
});
如果您正在運行Desktop Bridge,請確保正確初始化商店上下文。 有關更多信息,請參閱將StoreContext類與Desktop Bridge一起使用 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.