Windows 8 Windows 8平板电脑上未显示消息对话框-Caliburn.Micro/C#

Windows 8 Windows 8平板电脑上未显示消息对话框-Caliburn.Micro/C#,windows-8,microsoft-metro,caliburn.micro,tablet-pc,messagedialog,Windows 8,Microsoft Metro,Caliburn.micro,Tablet Pc,Messagedialog,有人听说过Windows8平板电脑上没有显示MessageDialog的问题吗?或者更具体地说是三星700t?它使用常规intel进程,而不是ARM。我在笔记本电脑上构建了这个应用程序,当从笔记本电脑上调试时会显示messagedialog,它会在平板电脑模拟器上显示,但不会在实际的平板电脑上显示 我正在使用Caliburn.Micro IResult界面在视图中显示messagedialog 下面是我正在使用的代码片段: public IEnumerable<IResult> Na

有人听说过Windows8平板电脑上没有显示MessageDialog的问题吗?或者更具体地说是三星700t?它使用常规intel进程,而不是ARM。我在笔记本电脑上构建了这个应用程序,当从笔记本电脑上调试时会显示messagedialog,它会在平板电脑模拟器上显示,但不会在实际的平板电脑上显示

我正在使用Caliburn.Micro IResult界面在视图中显示messagedialog

下面是我正在使用的代码片段:

public IEnumerable<IResult> NavExecute(String method)
{
    Windows.UI.ViewManagement.ApplicationView.TryUnsnap();
    var conn = NetworkInformation.GetInternetConnectionProfile();
    if (conn.GetNetworkConnectivityLevel() != NetworkConnectivityLevel.InternetAccess)
    {
        yield return new MessageDialogResult("Internet Connection Not Detected", "Connection Error");
        netOn = false;

    }
我不认为这是代码的问题,因为我在两台设备上都以x86模式进行调试(在有人问我为什么不调试所有设备之前,这是因为我使用的是SQLite,它要求每个ArhitArchitecture有一个单独的包)

我不确定Windows 8中是否有禁用应用程序内弹出窗口的设置,但我找不到


有什么想法吗?

您正在处理
Coroutine.Execute的回调吗

Execute
上的回调可能正在回调,而协程抛出了一个异常-如果您没有在回调中显式地查找它,这将自动失败

Coroutine.Execute(YourEnumerator(), new ActionExecutionContext { Blah }, (o, e) => {
    if(e.Error != null) // Something went wrong
});
也许异步等待是抛出或类似的东西(不知道为什么!)

编辑:

啊,另外,你的枚举器中的东西也可能抛出:

Windows.UI.ViewManagement.ApplicationView.TryUnsnap();
var conn = NetworkInformation.GetInternetConnectionProfile();

如果未在回调中处理,则可能引发使外部枚举数吞下异常,或者可能是
conn

上的nullref GetInternetConnectionProfile()返回nullref的原因是,在笔记本电脑上,如果断开无线连接,笔记本电脑的互联网连接模式默认为以太网,而平板电脑(至少三星700T)没有以太网端口,因此如果没有建立无线连接,其连接模式就不存在


感谢Charleh为我指出了正确的方向。

您有没有其他RT平板电脑可以用来试穿?代码在我看来还可以,但是在ShowAsync期间会发生任何抛出吗?这将导致协同程序中止(它不会进一步抛出异常,它只是将其放入结果回调中)看起来像您的权利,它不像GetInternetConnectionProfile()调用,我也在启动时进行相同的检查,如果设备没有internet访问,它将在这一部分崩溃。看起来它在GetInternetConnectionProfile()方法中的某个地方崩溃了。在这个屏幕如此小的平板电脑上,调试是一件痛苦的事情。可能是平板电脑的硬件问题,因为它与笔记本电脑运行相同的操作系统。是时候庆祝一下了?(还有向上投票?)然后是一张悲伤的脸:(我不认为这是eNumerator的问题,因为当它在app.xaml.cs中出现故障时,我没有使用eNumerator,甚至没有使用messagedialog。这肯定与从设备获取网络信息有关。感谢您为我指明了正确的方向!如果它没有从
var conn=NetworkInformation.Get返回任何信息,请InternetConnectionProfile
调用,那么您有一个空引用,但在下一行使用它之前,您不需要进行空检查…不知道是什么导致它-tbh我一生中从未为WinRT编程过:P只是非常了解CM(并且CM代码库是共享的)。如果它返回null yes,则在使用时将抛出,但因为执行被包装在CM
SequentialResult
中,(这将枚举可枚举项、句柄和异常)您不会看到异常。相反,
coutroutine
会停止枚举,并立即触发传递异常的回调。这意味着如果您不处理回调,它可能会自动失败-因此这是您最可能遇到的情况
Windows.UI.ViewManagement.ApplicationView.TryUnsnap();
var conn = NetworkInformation.GetInternetConnectionProfile();