Gibt es eine andere Möglichkeit, eine Aufgabe mit dieser Codezeile abzubrechen, oder bin ich gezwungen, diese Funktion zu löschen?
Sie können unkündbaren Code nicht einfach abbrechen. Dies gilt unabhängig von Sprache, Plattform, Betriebssystem oder ob der Code asynchron/synchron ist.
Wenn der Code nicht nativ die Löschung unterstützt (wie in Ihrem Fall), dann haben Sie ein paar Optionen.
Man soll die Operation (download) nicht abbrechen; Abbrechen Sie einfach die warte. Dies gibt Ihnen den Vorteil, dass Sie so tun können,, um den Vorgang abzubrechen, aber beachten Sie, dass die Operation weiterhin ausgeführt wird, als ob nichts passiert wäre.
Eine andere Option ist es, einen raffinierten kleinen Trick zu verwenden, der für die meisten Windows-Vorgänge funktioniert: Schließen Sie einen zugrunde liegenden Handle. Dies führt normalerweise dazu, dass der Vorgang fehlschlägt. In diesem Fall können Sie den Blob nicht schließen, aber Sie können versuchen, den Stream zu schließen, in den er schreibt.
Wenn die Operation synchron ist, können Sie sie um eine Stufe erweitern, indem Sie die Operation in einem separaten Thread ausführen und dann diesen Thread beim Abbrechen abbrechen. Ich empfehle diesen Ansatz nicht, da das Abbrechen von Threads für die langfristige Gesundheit Ihrer Anwendung sehr schlecht ist. Dies ist jedoch der von ASP.NET verwendete Ansatz, bei dem gelegentlich auch Ihre Anwendung recycelt wird, um diese langfristigen Gesundheitsprobleme zu beheben.
Schließlich, wenn Sie eine zuverlässige Möglichkeit benötigen, um eine Operation wirklich abzubrechen, ohne die Gefahr des Abbrechens von Threads, gibt es die nukleare Option: Legen Sie die Operation in einen separaten Prozess. Das Töten eines Prozesses ist sauber (im Gegensatz zum Abbrechen von Threads), und es wird den Vorgang tatsächlich zum Abbrechen zwingen. Ich musste das nur einmal tun; es war nicht schön, aber es hat funktioniert.
Bitte teilen Sie uns mit, welche Version der Storage Client-Bibliothek (Microsoft.WindowsAzure.Storage.dll) Sie verwenden? –