This sample zeigt, wie eine Headless-App zu implementieren, die für mich auf Raspberry Pi funktionierte.So konfigurieren Sie Headless Windows IoT-Anwendungsprojekt zur Unterstützung von async/erwarten?
This sample zeigt eine App, die Task
und async/await verwendet. Es läuft auch auf Raspberry Pi mit Null-Problem.
Allerdings, wenn ich eine Funktion mit async
in seiner Unterschrift und den Rückgabetyp von Task
zum kopflos App Projekt wie das hinzufügen:
public async Task Test()
{
}
Ich erhalte Kompilierungsfehler, die mich informiert, dass es nicht auf Windows-Runtime unterstützt:
error WME1038: Method 'BlinkyHeadlessCS.ReadMessagesFromDevice.ChangeDeviceMode()' has a parameter of type 'System.Threading.Tasks.Task' in its signature. Although this type is not a valid Windows Runtime type, it implements interfaces that are valid Windows Runtime types. Consider changing the method signature to use one of the following types instead: ''.
Von dieser Nachricht mache ich einen Schluss zu, dass der Grund, dass es, dass das Projekt Ausgabetyp nicht kompiliert ist WinRT ist. Aber ich würde gerne wissen, wie das Projekt richtig zu konfigurieren, so dass es ähnlich wie das Beispiel funktioniert?.
Insbesondere möchte ich die Funktion in dem obigen Beispiel erfolgreich kompilieren und arbeiten, wie es in dem Kopf Probe hinzugefügt wird.
Was ich bisher versucht:
- Changed die Projektausgabe auf die einzige andere Option in der Dropdown-Liste: "Klassenbibliothek". Fehlgeschlagen Kompilation mit diesem Fehler:
error : One of your dependencies requires the .NET Framework, but the .NET Framework could not be found in the NuGet packages installed in this project. Please install the appropriate .NET Framework packages required by your dependency.
Ich bin mir nicht sicher, was „angemessen nuget Pakete“ diese Fehlermeldung möglicherweise beziehen könnte. Ich bin mir auch nicht sicher, ob "Klassenbibliothek" der richtige Ausgabetyp ist.
- Es wurde versucht, die Benutzeroberfläche aus dem zweiten Beispiel zu entfernen. Fehlgeschlagen Kompilation mit dem folgenden Fehler:
error CS5001: Program does not contain a static 'Main' method suitable for an entry point
- Versucht, eine leere Haupt in der App hinzufügen. Deployment schlug mit dem folgenden Fehler:
Error DEP0001 : Unexpected Error: -2145615869
Ist Ihr Asynchron-Methode public, und tut es sein? IIRC, es gibt Einschränkungen, was Sie in WinRT * öffentlich machen können *, aber Sie sollten in der Lage sein * intern * async/gate zu verwenden. Es ist ein wenig verwirrend, da Sie nicht wissen, wie sehr das Problem damit zu tun hat, dass Sie eine 'Main'-Methode verwenden, anstatt den richtigen Projekttyp auszuwählen, anstatt Async zu verwenden. Ich würde versuchen, es auf ein * Problem zu setzen. Erhalte etwas Einfaches ohne Async und führe dann eine Async-Methode ein. –
@JonSkeet, danke für das Einspielen. Ich entschuldige mich, dass meine Frage nicht klar zu lesen ist. Die wichtigsten Punkte sind: 1) Headless-App funktioniert, aber der Ausgabetyp WinRt weigert sich so etwas zu kompilieren mit Aufgabe 2) headed funktioniert perfekt mit [.NET für UWP-Apps] (https://msdn.microsoft.com/en-us/ library/windows/apps/xaml/mt185501.aspx) 3) Probleme beim Einrichten des Projekts ohne Kopf, das .NET für UWP-Apps verwenden würde Task ' –
Das hat meine Frage, ob die Methode öffentlich ist oder nicht, nicht beantwortet - und es gibt einen großen Unterschied zwischen "keine asynchrone Methode zulassen" und "sich weigern, etwas mit der Aufgabe zu kompilieren". –