从后台任务执行程序

Posted

技术标签:

【中文标题】从后台任务执行程序【英文标题】:Excute a program from a BackgroundTask 【发布时间】:2014-11-06 11:28:14 【问题描述】:

我做了一个后台任务,让它监听 NetworkStateChange,效果很好。

我正在尝试通过 Windows.System.Launcher.LaunchUriAsync 启动程序,但尝试时出现 Access is denied 异常:

这里是任务的来源:

namespace Tasks

    public sealed class Upload : IBackgroundTask
    
        BackgroundTaskDeferral _deferral = null;
        private bool wifiConnected = false;

        public bool WiFiConnected
        
            get
            
                return wifiConnected;
            
            set
            
                if (value == wifiConnected)
                    return;

                wifiConnected = value;
            
        


        public void Run(IBackgroundTaskInstance taskInstance)
        

            var InternetConnectionProfile = NetworkInformation.GetInternetConnectionProfile();
            WiFiConnected = InternetConnectionProfile != null;

            if (!WiFiConnected)
            
                LaunchFlexCheck();
                return;
            


            _deferral = taskInstance.GetDeferral();
            _deferral.Complete();
        

        private async void LaunchFlexCheck()
        
            Debug.WriteLine("BEFORE LaunchFlexCheck()");
            bool result = false;
            try
            
                result = Windows.System.Launcher.LaunchUriAsync(new System.Uri("myapp:MainPage")).GetResults();
            
            catch (Exception e)
            
                result = false;
                Debug.WriteLine("LaunchFlexCheck exception:" +  e.Message );
            

            Debug.WriteLine("LaunchFlexCheck succes:" + (result ? "true" : "false"));
            Debug.WriteLine("AFTER LaunchFlexCheck()");
        

    

可以这样做吗?

【问题讨论】:

【参考方案1】:

从后台任务启动应用程序意味着用户会在他正在做的事情中被打断,以启动他没有请求的应用程序。这与 Windows Phone 的设计准则完全矛盾,在该准则中,用户必须始终保持控制。因此,我相信这是不可能的。

【讨论】:

以上是关于从后台任务执行程序的主要内容,如果未能解决你的问题,请参考以下文章

后台任务和运行应用检测

在 iOS 的后台任务中调用 Javascript 函数

在后台模式下从 Nodejs 执行 VBS(任务计划程序或 Windows 服务)

当应用程序进入后台时,在前台执行的长时间运行的任务被挂起

ios在后台 完成一个长期任务

csharp 使用后台工作程序执行后台任务