通用 Windows 应用后台任务 "has exited with code 1 (0x1)"
Universal Windows App Background Task "has exited with code 1 (0x1)"
这个让我摸不着头脑。
我的 UWP 应用程序中有一个后台任务,它每 15 分钟(使用 TimeTrigger
)和互联网可用时(使用 SystemTrigger
注册到 运行 ).我知道一个事实,当使用 visual studio 调试时,它们都已正确注册,因为它们都出现在 "Lifecycle Events" 中。尽管如此,我注册它们的代码如下:
bool registered1 = false;
bool registered2 = false;
foreach (var task in BackgroundTaskRegistration.AllTasks)
{
if (task.Value.Name == "BackgroundGPS")
{
registered1 = true;
}
if (task.Value.Name == "InternetAvailGPS")
{
registered2 = true;
}
}
await BackgroundExecutionManager.RequestAccessAsync();
if (!registered1)
{
var builder1 = new BackgroundTaskBuilder();
builder1.Name = "BackgroundGPS";
builder1.TaskEntryPoint = "BackgroundTasks.BackgroundGPSTask";
var triggerTime = new TimeTrigger(15, false);
builder1.SetTrigger(triggerTime);
BackgroundTaskRegistration task1 = builder1.Register();
}
if (!registered2)
{
var builder2 = new BackgroundTaskBuilder();
builder2.Name = "InternetAvailGPS";
builder2.TaskEntryPoint = "BackgroundTasks.BackgroundGPSTask";
var triggerIA = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
builder2.SetTrigger(triggerIA);
BackgroundTaskRegistration task2 = builder2.Register();
}
我已确保在我的清单中正确声明了任务。如果不是,我的应用程序会在尝试注册它们时抛出异常。
如果我 运行 在调试模式下,我可以看到 BackgroundGPS
和 InternetAvailGPS
都显示在生命周期事件中。但是,当我单击它们中的任何一个以强制它们执行时,我在输出中得到以下内容 window:
The program '[4728] backgroundTaskHost.exe' has exited with code 1 (0x1).
我在后台任务的 'Run' 方法的第一行代码处设置了一个断点,但从未命中。后台任务永远不会加载,也不会 运行,我不知道为什么。这可能不是我的 运行 方法的问题,但它看起来像这样(我省略了大部分内容,只包括了开头和结尾)
public async void Run(IBackgroundTaskInstance taskInstance)
{
Debug.WriteLine("GPS Started");
int errCode = 0;
try
{
_deferral = taskInstance.GetDeferral();
saveGPSStatus(DateTime.Now.ToString(), "", " ");
var access = await Geolocator.RequestAccessAsync();
if (access != GeolocationAccessStatus.Allowed)
{
Debug.WriteLine("No access");
saveGPSStatus("", "", "No GPS Access");
return;
}
Geolocator locator = new Geolocator();
locator.DesiredAccuracyInMeters = 100;
Geoposition position = await locator.GetGeopositionAsync();
//Stuff goes on in here
_deferral.Complete();
}
catch (Exception e)
{
Debug.WriteLine(e.Message);
saveGPSStatus("", "", "Unexpected error. Err code "+errCode+". " + e.Message);
_deferral.Complete();
}
}
我在 Windows Phone 和 Windows 平板电脑上都试过了 运行ning build 10.0.10586.164,它们都没有执行我的后台任务。
正如我上面所说,这些在几周前运行良好,直到一些应用程序的用户一直在抱怨才意识到出了点问题!
非常感谢任何帮助。
它最终成功了,我只是在我的主项目中缺少对我的后台任务项目的引用。我一定是在那之前的某个时候不小心删除了它。
只是为了扩展没有引用它,没有正确的 TaskEntryPoint 命名空间和 class 名称也会导致此错误。对我来说,我拼错了 class 这个名字。
这个让我摸不着头脑。
我的 UWP 应用程序中有一个后台任务,它每 15 分钟(使用 TimeTrigger
)和互联网可用时(使用 SystemTrigger
注册到 运行 ).我知道一个事实,当使用 visual studio 调试时,它们都已正确注册,因为它们都出现在 "Lifecycle Events" 中。尽管如此,我注册它们的代码如下:
bool registered1 = false;
bool registered2 = false;
foreach (var task in BackgroundTaskRegistration.AllTasks)
{
if (task.Value.Name == "BackgroundGPS")
{
registered1 = true;
}
if (task.Value.Name == "InternetAvailGPS")
{
registered2 = true;
}
}
await BackgroundExecutionManager.RequestAccessAsync();
if (!registered1)
{
var builder1 = new BackgroundTaskBuilder();
builder1.Name = "BackgroundGPS";
builder1.TaskEntryPoint = "BackgroundTasks.BackgroundGPSTask";
var triggerTime = new TimeTrigger(15, false);
builder1.SetTrigger(triggerTime);
BackgroundTaskRegistration task1 = builder1.Register();
}
if (!registered2)
{
var builder2 = new BackgroundTaskBuilder();
builder2.Name = "InternetAvailGPS";
builder2.TaskEntryPoint = "BackgroundTasks.BackgroundGPSTask";
var triggerIA = new SystemTrigger(SystemTriggerType.InternetAvailable, false);
builder2.SetTrigger(triggerIA);
BackgroundTaskRegistration task2 = builder2.Register();
}
我已确保在我的清单中正确声明了任务。如果不是,我的应用程序会在尝试注册它们时抛出异常。
如果我 运行 在调试模式下,我可以看到 BackgroundGPS
和 InternetAvailGPS
都显示在生命周期事件中。但是,当我单击它们中的任何一个以强制它们执行时,我在输出中得到以下内容 window:
The program '[4728] backgroundTaskHost.exe' has exited with code 1 (0x1).
我在后台任务的 'Run' 方法的第一行代码处设置了一个断点,但从未命中。后台任务永远不会加载,也不会 运行,我不知道为什么。这可能不是我的 运行 方法的问题,但它看起来像这样(我省略了大部分内容,只包括了开头和结尾)
public async void Run(IBackgroundTaskInstance taskInstance)
{
Debug.WriteLine("GPS Started");
int errCode = 0;
try
{
_deferral = taskInstance.GetDeferral();
saveGPSStatus(DateTime.Now.ToString(), "", " ");
var access = await Geolocator.RequestAccessAsync();
if (access != GeolocationAccessStatus.Allowed)
{
Debug.WriteLine("No access");
saveGPSStatus("", "", "No GPS Access");
return;
}
Geolocator locator = new Geolocator();
locator.DesiredAccuracyInMeters = 100;
Geoposition position = await locator.GetGeopositionAsync();
//Stuff goes on in here
_deferral.Complete();
}
catch (Exception e)
{
Debug.WriteLine(e.Message);
saveGPSStatus("", "", "Unexpected error. Err code "+errCode+". " + e.Message);
_deferral.Complete();
}
}
我在 Windows Phone 和 Windows 平板电脑上都试过了 运行ning build 10.0.10586.164,它们都没有执行我的后台任务。
正如我上面所说,这些在几周前运行良好,直到一些应用程序的用户一直在抱怨才意识到出了点问题!
非常感谢任何帮助。
它最终成功了,我只是在我的主项目中缺少对我的后台任务项目的引用。我一定是在那之前的某个时候不小心删除了它。
只是为了扩展没有引用它,没有正确的 TaskEntryPoint 命名空间和 class 名称也会导致此错误。对我来说,我拼错了 class 这个名字。