So verfolgen Sie den Fortschritt des asynchronen Dateiuploads in den azurblauen Speicher

8

Gibt es eine Möglichkeit, den Fortschritt des Dateiuploads zum Azure-Speichercontainer zu verfolgen?
Ich versuche, eine Konsolenanwendung zum Hochladen von Daten in Azurblau mit C # zu erstellen.
Mein Kühler sieht jetzt wie folgt aus:

%Vor%

Dieser Code funktioniert gut, aber ich werde gerne eine Art Fortschrittsbalken haben, damit Benutzer sehen können, dass Aufgaben erledigt werden. Gibt es im WindowsAzure.Storage.Blob-Namespace etwas, das ich als Hase verwenden kann?

    
adopilot 16.01.2014, 23:48
quelle

2 Antworten

14

Ich denke nicht, dass das möglich ist, weil das Hochladen einer Datei eine einzelne Aufgabe ist und obwohl die Datei intern in mehrere Teile aufgeteilt ist und diese Stücke hochgeladen werden, wartet der Code tatsächlich auf den Abschluss der gesamten Aufgabe.

Eine Möglichkeit wäre, die Datei manuell in Chunks aufzuteilen und diese Chunks asynchron hochzuladen, indem Sie PutBlockAsync Methode. Sobald alle Chunks hochgeladen sind, können Sie PutBlockListAsync Methode zum Übernehmen des Blobs. Bitte beachten Sie den folgenden Code, der Folgendes bewirkt:

%Vor%     
Gaurav Mantri 17.01.2014, 09:48
quelle
4

Gauravs Lösung funktioniert gut und ist Ссылка . Die Herausforderung bei diesem Code besteht darin, dass Sie viel komplexe Arbeit mit sehr wenig Fehlerbehandlung machen. Ich sage nicht, dass mit Gauravs Code etwas nicht stimmt - es sieht solide aus - aber vor allem mit netzwerkbezogenem Kommunikationscode gibt es viele Variablen und viele Probleme, die Sie berücksichtigen müssen.

Aus diesem Grund habe ich mein ursprüngliches Blog geändert, um den Upload-Code aus der Speicherclientbibliothek zu verwenden (unter der Annahme, dass der Code aus dem Azure Storage-Team robuster ist als alles, was ich schreiben könnte) und den Fortschritt mithilfe einer ProgressStream-Klasse zu verfolgen . Sie können den aktualisierten Code unter Ссылка .

    
kwill 17.01.2014 17:31
quelle