UWP使用ExtendedExecutionSession或ExtendedExecutionForegroundSession

时间:2017-12-01 04:44:54

标签: uwp suspend

UWP,我不能禁用暂停。我需要你的知识。 这是我知道问题的简单例子。它的反向增加/减少应用程序。

实际上,我想要监控设备的温度356 x 24小时而不会停止。我希望在挂起模式下增加值++。

但UWP在上任期间不起作用.. 为什么?

enter image description here

上传的代码在Github.com上。您可以测试我的简单应用程序。 https://github.com/bidasknakayama/Basic

这是我的环境。它是台式电脑。

  • 台式电脑或插入式便携式电脑(无电池模式)
  • 作为Sideloaded应用程序输出

Package.appxmanifest

<?xml version="1.0" encoding="utf-8"?>                                                                                          
<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"                                                
         xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"                                                       
         xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"                                                   
         xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"                  
         xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"                                           
        IgnorableNamespaces="uap mp rescap">                                                                                    


  <Capabilities>                                                                                                                
    <Capability Name="internetClient" />                                                                                        
    <rescap:Capability Name="extendedBackgroundTaskTime"/>                                                                      
    <rescap:Capability Name="extendedExecutionUnconstrained"/>                                                                  
    <DeviceCapability Name="serialcommunication">                                                                               
      <Device Id="any">                                                                                                         
        <Function Type="name:serialPort" />                                                                                     
      </Device>                                                                                                                 
    </DeviceCapability>                                                                                                         
  </Capabilities>                                                                                                                                                                                                                                             
</Package>       

App.xaml.cs https://github.com/bidasknakayama/Basic/blob/master/Basic/App.xaml.cs

我尝试在位置(A)(B)(C)(D)处插入 ExtendedExecutionSession ExtendedExecutionForegroundSession 。但没有成功。

BaseViewModel.cs https://github.com/bidasknakayama/Basic/blob/master/Basic/ViewModels/BaseViewModel.cs

    protected override void OnActivate()
    {
        base.OnActivate();
        _eventAggregator.Subscribe(this);

        // Background Run.
        Task.Run(MainLoop);

    }
    private async Task MainLoop()
    {
        while (true)
        {
            Counter = _counter + 1;
            await Task.Delay(500);
            await ImportantNoStopJob();
        }
    }
    private async Task ImportantNoStopJob() // Important. I do not want to stop it during suspend.
    {
        Temp = _temp  - 1;
        await Task.Delay(500);
    }

问题很简单。

如何在暂停期间增加值?

更新#1

根据Raymond的建议(谢谢!),I found good article.。它有CoreWindow.Activated事件。

Window.Current.CoreWindow.Activated += CoreWindow_OnActivated;

使用此代码,我得到 ExtendedExecutionResult.Allowed 。这很好。

但我还有问题。在发布模式下,我试图模拟&#34;暂停&#34;。代码永远不会工作......我想。我的后台工作试图修改UI。然后,代码可能无法工作..但我不知道为什么......

enter image description here

我上传了ver 2代码,你可以轻松测试。

https://github.com/bidasknakayama/Basic2

更新#2

我想,我们不应该使用&#34;暂停&#34;这个测试的按钮。即使我们编写此代码也会使其成为真正暂停。对 ? 如果是这样,我们现在可以解决这个问题......

我测试了一些,看起来很不错。

0 个答案:

没有答案