【发布时间】:2025-12-06 18:25:01
【问题描述】:
我正在将文件上传到 Azure。代码可以正常上传文件,但我的页面在完成之前刷新并显示旧图像。我可以手动刷新页面并显示新图像。为什么我的方法没有等待任务完成?
public static bool Upload(Stream image, String id)
{
try {
var key = String.Format("{0}.png", id);
image.Position = 0;
var container = new CloudBlobContainer(new Uri(string.Format("{0}/{1}", Host, Container)), Credentials);
var blob = container.GetBlockBlobReference(key);
blob.Properties.ContentType = "image/png";
Task task = Task.Run(() => { blob.UploadFromStreamAsync(image); });
Task.WaitAll(task);
}
catch {
return false;
}
return true;
}
回答:非常感谢 aleksey.berezan。结果证明甚至没有使用该任务。
所以这个:
Task task = Task.Run(() => { blob.UploadFromStreamAsync(image); });
Task.WaitAll(task);
变成了这样:
Task.WaitAll(blob.UploadFromStreamAsync(image));
一切都很完美!
【问题讨论】:
-
offtop:
catch { return false; }- 在家里试试这个,但不要在工作中 -
如何调用
Upload方法?能否请您发布您的网页代码? -
是的,捕获的东西是速记。我还没有完全实现错误处理。并且调用只是一个基本的静态调用。 DataStorageUtility.Upload(data.Image.InputStream, id);
-
如果你直接调用
Task而不是blob.UploadFromStreamAsync(image);,它会起作用吗? -
感谢 aleksey.berezan!这很完美。写下这个作为答案,我会标记它为你回答。
标签: c# azure asynchronous blob task