1
我正在編寫一次加載同一任務的多個實例並等待它們全部完成的代碼。每個任務都從一個文件讀取並上傳該文件一部分的字節數組。在異步任務中關閉MemoryStream
var requests = new Task[parts.Count];
foreach (var part in parts)
{
var partNumber = part.Item1;
var partSize = part.Item2;
var ms = new MemoryStream(partSize);
var bw = new BinaryWriter(ms);
var offset = (partNumber - 1) * partMaxSize;
var count = partSize;
bw.Write(assetContentBytes, offset, count);
ms.Position = 0;
Console.WriteLine("beginning upload of part " + partNumber);
requests[partNumber - 1] = uploadClient.UploadPart(uploadResult.AssetId, partNumber, ms);
}
await Task.WhenAll(requests);
我想相關的任務後關閉這些MemoryStreams是完整的,但如果我寫stream.Close()進入死循環,在任務前關閉流完成。任務完成後是否可以關閉每個流?謝謝。
好像'UploadPart'是同步調用。關閉ms後 –
這裏是什麼'uploadClient'? –
@ L.B那麼該方法返回一個'任務'。什麼讓你覺得它是同步的? – Servy