Mit den unten Referenzen läuft, habe ich versucht, eine Hintergrundaufgabe in einer UWP App zu machen:UWP Timer Hintergrund Aufgabe nicht
https://docs.microsoft.com/en-us/windows/uwp/launch-resume/create-and-register-a-background-task
https://docs.microsoft.com/en-us/windows/uwp/launch-resume/run-a-background-task-on-a-timer-
https://www.youtube.com/watch?v=H18HrUin46I
Alles funktioniert wie Wird im YouTube-Video angezeigt, wenn die Hintergrundaufgabe im Debug-Modus ausgeführt wird, aber die Debug/Release-Version der App die 15-minütige Hintergrundaufgabe nicht selbst startet. Hier ist der Code:
MainPage.xaml.cs
using TimerBG;
bool taskRegistered = false;
foreach (var task in BackgroundTaskRegistration.AllTasks)
{
if (task.Value.Name == nameof(BG))
{
task.Value.Unregister(true);
}
}
if(!taskRegistered)
{
Setup();
}
public async static void Setup()
{
BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();
var builder = new BackgroundTaskBuilder();
builder.Name = nameof(BG);
builder.TaskEntryPoint = typeof(BG).ToString();
TimeTrigger trig = new TimeTrigger(15, false);
builder.SetTrigger(trig);
SystemCondition userCondition = new SystemCondition(SystemConditionType.UserNotPresent);
builder.AddCondition(userCondition);
builder.CancelOnConditionLoss = false;
builder.Register();
}
BG.cs
using Windows.ApplicationModel.Background;
using Windows.Storage;
namespace TimerBG
{
public sealed class BG : IBackgroundTask
{
BackgroundTaskDeferral _deferral;
public async void Run(IBackgroundTaskInstance taskInstance)
{
_deferral = taskInstance.GetDeferral();
StorageFolder storageFolder = ApplicationData.Current.LocalFolder;
StorageFile sampleFile = await storageFolder.GetFileAsync("sample.txt");
await FileIO.WriteTextAsync(sampleFile, DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString());
_deferral.Complete();
}
}
}
Das Paket Manifest Hintergrundaufgaben-Eigenschaft auf "Timer" mit dem Einspeisepunkt als „TimerBG. BG ".
Jede Hilfe würde sehr geschätzt werden.
Meinten Sie eine Bedingung von "Benutzer ** nicht ** vorhanden" zu haben? –
Ich habe das gerade anhand dieser Dokumentation (https://docs.microsoft.com/en-us/uwp/api/Windows.ApplicationModel.Background.SystemConditionType) gesehen und teste UserPresent jetzt im Release-Code. – detailCode
Okay, auf SystemConditionType.UserPresent umgestellt. Wenn die App im Debug mit VS ausgeführt wird, wird die Hintergrundaufgabe nie ausgelöst und trifft meinen Haltepunkt. Ich habe Schaltflächen erstellt, um zu prüfen, ob die Aufgabe registriert ist. Was vermisse ich? – detailCode