从后台任务执行程序
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 的设计准则完全矛盾,在该准则中,用户必须始终保持控制。因此,我相信这是不可能的。
【讨论】:
以上是关于从后台任务执行程序的主要内容,如果未能解决你的问题,请参考以下文章