none
Metro C++ socket网络应用,系统休眠时如何处理? RRS feed

  • 问题

  • 我们现在已经开发完成一款通过StreamSocket实时联网的游戏,在系统休眠是碰到如下问题,不知有没有更好的办法处理?

    1、系统休眠时,应用是否可以捕捉到,做一些处理?app的OnSuspending打断点好像不会调用;

    2、系统休眠时,系统会断开StreamSocket连接,导致类似StreamSocket的示例中ReceiveLoop接收异常;

    3、有时系统会提示“应用遇到问题,你可以向MICROSOFT发送问题相关信息以帮助改进此应用“

    StreamSocket的使用参考的是示例StreamSocket sample中client端的用法。

    2013年1月6日 3:07

答案

  • Suspending事件仅针对应用本身挂起时才会触发。

    而这与操作系统休眠是两回事。当然,系统从休眠状态下恢复时,会间接触发一些事件。比如,当前应用会收到Activated事件。

    目前,没有直接捕获系统休眠的事件,可以在你的商店应用中侦听。但是,系统休眠,对于应用而言,是透明的。这意味着,在休眠和唤醒时,系统会做好相关的状态保存与恢复工作。

    你可以用Background Task去注册并回应有关的系统事件,检测连接是否断开,如果断开,可以重新连接socket。

    有关后台任务的一些类定义在 Windows.ApplicationModel.Background 命名空间里。

    请参考 How to respond to system events with background tasks Background task sample


    Robin [MSFT]
    MSDN Community Support | Feedback to us
    Develop and promote your apps in Windows Store
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 QitaoFan 2013年1月9日 9:23
    2013年1月9日 8:14
    版主