我有使用其他 2 個端點的處理程式的端點,這可能不是最佳實踐,但這不是重點。在這種方法中,我使用了很多 MemoryStreams、ZipStream 和類似的東西。當然,我處理了所有這些。一切都很好,直到我一起運行所有測驗,然后測驗拋出錯誤,例如:“輸入字串的格式不正確。”、“無法讀取 Zip 檔案”或其他奇怪的訊息。這也是我在之前的測驗中使用的這 2 個處理程式的測驗。我發現的解決方案是添加“Thread.Sleep(1);” 在“處理”方法的末尾,就在回傳之前。看起來有些東西需要更多時間來處理,但為什么呢?你知道為什么這個 1 毫秒的睡眠有助于解決這個問題嗎?
ExtractFilesFromZipAndWriteToGivenZipArchive 是一種異步方法。
public async Task<MemoryStream> Handle(MultipleTypesExportQuery request, CancellationToken cancellationToken)
{
var stepwiseData = await HandleStepwise(request.RainmeterId, request.StepwiseQueries, cancellationToken);
var periodicData = await HandlePeriodic(request.RainmeterId, request.PeriodicQueries, cancellationToken);
var data = new List<MemoryStream>();
data.AddRange(stepwiseData);
data.AddRange(periodicData);
await using (var ms = new MemoryStream())
using (var archive = new ZipArchive(ms, ZipArchiveMode.Create,false))
{
int i = 0;
foreach (var d in data)
{
d.Open();
d.Position = 0;
var file = ZipFile.Read(d);
ExtractFilesFromZipAndWriteToGivenZipArchive(file, archive, i, cancellationToken);
i ;
file.Dispose();
d.Dispose();
}
//Thread.Sleep(100);
return ms;
}
}
uj5u.com熱心網友回復:
ExtractFilesFromZipAndWriteToGivenZipArchive() 是一個異步函式,這意味著,在這種情況下,您需要await它:
await ExtractFilesFromZipAndWriteToGivenZipArchive(file, archive, i, cancellationToken);
否則,執行將繼續進行而不等待函式回傳。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/371692.html
