2017-12-15 14 views
1

Ich arbeite an einer UWP-Anwendung, die eine Datei außerhalb des lokalen Speichers erstellen muss. Ich benutze eine Ordnerauswahl, damit der Benutzer den Ausgabedirektor auswählen kann, dann speichere ich diese Auswahl mit LocalSettings und füge den Ordner der FutureAccessList hinzu.CreateFileAsync erstellt blockierte Datei

Dann verwende ich StorageFile.CreateFileAsync, um die Datei zu erstellen (was erfolgreich ist, keine Fehler oder Ausnahmen).

Das Problem ist, wird die Datei mit Sperr erstellt, wie Sie in dem Datei-Eigenschaften-Dialog sehen: enter image description here

Gibt es eine spezielle Art und Weise die Datei, ohne diese oder eine Möglichkeit zu schaffen, mit C# zu entsperren?

+0

Sind Sie sicher, dass Sie die richtige Erweiterung für das Dateiformat verwenden? –

+0

Ja. Zum Testen ist es nur eine TXT-Datei. Und die Datei öffnet sich. –

Antwort

0

Ich möchte hier einige meiner Erkenntnis teilen:

  1. Yep ich diese reproduzieren kann, wenn sie mit einem Bild zu testen. Ich denke, andere Dateien können das gleiche Ergebnis haben
  2. Nach dem folgenden SO-Thread: thread1 und thread2, ist die Eigenschaft in System.AppZoneIdentifier geschrieben, die eine erweiterte Eigenschaft ist, wenn Sie es aus einer UWP-App überprüfen zu here)
  3. ich mit Code zu testen diese extended property zu erhalten:

    IDictionary<string, object> extraProperties = await file.Properties.RetrievePropertiesAsync(propertiesName); 
        var propValue = extraProperties[appzoneProperty]; 
        if (propValue != null) 
        { 
         fileProperties.AppendLine("appzone property: " + propValue); 
        } 
    

    ich immer null Wert. Nach meinem Verständnis kann dies mit der Erlaubnis zusammenhängen.

  4. Also ich denke, wenn Sie diese Funktion ändern müssen, müssen Sie möglicherweise die Verwendung von Desktopbridge-Technologie verwenden FullTrustProcessLauncher verwenden. Auf diese Weise können Sie win32-Prozess ausführen, um die Eigenschaft Ihrer Datei zu ändern.

+0

Ich sah diese beiden Threads auch, aber ich glaube, dass die Lösungen nicht für UWP gelten. Die einzige Möglichkeit, ein UWP mit einer Win32-App zu verknüpfen, besteht darin, das UWP "seitlich zu laden", was nicht die Richtung ist, in die ich gehen möchte. –

+0

@JohnieKarr FullTrustProcesslancher ist Desktopbridge-Art, die sich von "Sideload" unterscheidet. Sie können dies [Beispiel] (https://github.com/Microsoft/DesktopBridgeToUWP-Samples/tree/master/Samples/AppServiceBridgeSample) sehen. Der Unterschied besteht darin, dass Sie Capability hinzufügen und dieses [Formular] ausfüllen müssen (https: // developer.microsoft.com/en-us/windows/projects/campaigns/desktop-bridge). Für UWP-spezifische Lösungen haben wir leider keine Erlaubnis, dieses Attribut zu modifizieren. –

+0

danke für die Korrektur! Ich gebe dieser Route eine Chance. –