Ich habe versucht, Code im Hintergrund auszuführen. Bis jetzt habe ich es geschafft, die Aufgabe zu registrieren, aber die Run-Methode wird nie ausgeführt. Das ist, was ich habe, so weit:Starten der Hintergrundaufgabe in UWP über DependencyService
BackgroundUWP:
[assembly: Xamarin.Forms.Dependency(typeof(App.UWP.BackgroundUWP))]
namespace App.UWP
{
class BackgroundUWP : IBackground
{
public async void RegisterAndStartTask()
{
string taskName = typeof(MyTask).Name;
foreach (var task in BackgroundTaskRegistration.AllTasks)
{
if (task.Value.Name == taskName)
{
task.Value.Unregister(true);
break;
}
}
BackgroundTaskBuilder builder = new BackgroundTaskBuilder();
ApplicationTrigger trigger = new ApplicationTrigger();
builder.Name = taskName;
builder.TaskEntryPoint = typeof(MyTask).FullName;
builder.SetTrigger(trigger);
BackgroundTaskRegistration t = builder.Register();
await trigger.RequestAsync();
}
}
}
MyTask:
namespace App.UWP
{
public sealed class MyTask : IBackgroundTask
{
public void Run(IBackgroundTaskInstance taskInstance)
{
// this method isn't being called
}
}
}
Manifest:
<Extension Category="windows.backgroundTasks" EntryPoint="App.UWP.MyTask">
<BackgroundTasks>
<Task Type="systemEvent" />
</BackgroundTasks>
</Extension>
Meine app erreicht await trigger.RequestAsync();
, wenn ich einen Haltepunkt festgelegt. In der Konsole merke ich diese Nachricht backgroundTaskHost.exe has exited with code 1
. Was kann ich tun, um das zu beheben?
EDIT:
Might this Frage bezogen werden. Mein Projekt wie folgt aussieht:
- App (PCL)
- App.UWP
Wie ich weiß, müssen Sie diese Run-Methode nicht hinzufügen. Eine asynchrone Methode erstellt bereits eine Aufgabe. Wenn Sie das Schlüsselwort erwarten warten Sie einfach auf die Rückkehr. Wenn Sie nicht auf die Rückkehr warten möchten, entfernen Sie warten auf – OrcusZ
Ich folgte [dies] (https://msdn.microsoft.com/en-us/windows/uwp/launch-resume/create-and-register-a -background-task) Tutorial und es heißt, ich muss IBackgroundTask implementieren, die Sie zwingt, die Run-Methode zu implementieren. – Nfear
Fehler von meiner Seite, ich verstehe die BackgroundTask nicht und das ändert sich seit 8.1, das habe ich nicht so gemacht. Tut mir leid, ich kann dir nicht helfen – OrcusZ