Laden...

Forenbeiträge von desaster Ingesamt 6 Beiträge

13.01.2023 - 17:17 Uhr

Hi,

ich bin mir nicht ganz sicher, ob ich im korrekten Unterforum bin. Falls nicht, bitte verschieben.

Ich mache gerade meine ersten Erfahrungen mit Azure und versuche jetzt einen Blobupload abzubrechen. Ich versuche dies über einen CancellationToken entsprechend zu signalisieren.


            FileUploadSasUriResponse sasUri = await deviceClient.GetFileUploadSasUriAsync(fileUploadSasUriRequest, cancelToken);
            Uri uploadUri = sasUri.GetBlobUri();

            if (!cancelToken.IsCancellationRequested)
            {
                //-----------------------------------------------------------------
                // Upload the file
                try
                {
                    var blockBlobClient = new BlockBlobClient(uploadUri);
                    
                    await blockBlobClient.UploadAsync(fileStreamSource, GetOptions(fileStreamSource.Length, uploadOptions), cancelToken);
                   
                }
                catch (TaskCanceledException)
                {
                    statusCode = 100;
                    isSuccess = false;
                    info = "Task canceled!";
                }
                catch (OperationCanceledException)
                {
                    statusCode = 200;
                    isSuccess = false;
                    info = "Task canceled!";
                }
                catch (Exception ex)
                {
                    statusCode = 300;
                    isSuccess = false;
                    info = ex.Message;
                }
                finally
                {
                    var successfulFileUploadCompletionNotification = new FileUploadCompletionNotification
                    {
                        // Mandatory. Must be the same value as the correlation id returned in the sas uri response
                        CorrelationId = sasUri.CorrelationId,

                        // Mandatory. Will be present when service client receives this file upload notification
                        IsSuccess = isSuccess,

                        // Optional, user defined status code. Will be present when service client receives this file upload notification
                        StatusCode = statusCode,

                        // Optional, user-defined status description. Will be present when service client receives this file upload notification
                        StatusDescription = info,
                    };
                    await m_DeviceClient.CompleteFileUploadAsync(successfulFileUploadCompletionNotification);
                }
                //-----------------------------------------------------------------
            }

den "cancelToken" setze ich dann von der aufrufenden Task. Trotzdem habe ich das Problem, dass anscheinend in der Cloud der Upload nicht korrekt abgebrochen wird. Versuche ich anschließend direkt den Upload neu zu starten, kommt eine Fehlermeldung von der Cloud, dass die max. Anzahl der parallelen Uploads erreicht ist. Das kann ja eigentlich nur auftreten, wenn der vorherige Upload nicht ordnungsgemäß abgebrochen wurde.

Habt ihr hiermit schon Erfahrungen sammeln können.

Besten Dank.

18.11.2021 - 16:35 Uhr

Vielen Dank für eure Infos. Werde jetzt erst einmal die Internetseiten durchforsten. Habe schon ein paar Verweise auf die DataMovement (https://github.com/Azure/azure-storage-net-data-movement) Library gefunden. Das werde ich mir mal anschauen.

18.11.2021 - 14:40 Uhr

Mein erster Gedanke war ein Upload via Blobs.

18.11.2021 - 13:57 Uhr

Hallo,

ich weiß nicht, ob ich es in das richtige Unterforum gepostet habe. Wenn nicht, bitte einfach verschieben.

Bei meiner aktuellen Anwendung muss ich auch große Datenmengen (GBytes) in die Cloud laden. Ich überlege jetzt gerade, was die beste Variante wäre, eher viele kleinere Dateien (z.B. 32 MB?) oder in möglichst großen Dateien (z.B. 2 GByte)?

Gibt es die Möglichkeit, dass ein unterbrochener Upload (z.B. PC hat neu gestartet) wieder an der letzten Stelle fortgeführt werden kann? Wenn nicht, müsste ich die gesamte Datei neu übertragen.

Besten Dank.

27.08.2021 - 09:50 Uhr

API vom Board-Hersteller habe ich jetzt gefunden und runtergeladen. Das werde ich mir mal genauer anschauen.

Den genauer Hersteller des I2C Controllers habe ich auf die schnelle nicht gefunden.

Danke für die Hinweise.

27.08.2021 - 08:36 Uhr

Hallo,

ich habe ein Board, auf dem Windows10 läuft und welches auch I2C controller besitzt. Der Hersteller bietet hierfür einen Treiber an (Bundle aus *.inf, *.cat und *.sys). Diesen habe ich so weit auch installiert.

Was mir nicht klar ist, und darauf zielt meine Frage ab, wie erfolgt dann die softwareseitige Verknüpfung? Aktuell habe ich ein C# (VisualStudio) Projekt und würde gerne aus diesem heraus die Peripherie über den I2C Controller nutzen.

Geht das überhaupt so einfach oder muss ich noch einen Zwischenschritt tätigen?

Vielen Dank