我有两个任务的示例。当第一个任务完成后,第二个任务应该使用第一个任务的结果。由于我还是新手,希望有人能指导我如何链式执行它:
public async Task<string> UploadFile(string containerName, IFormFile file)
{
//string blobPath = "";
var container = GetContainer(containerName);
var fileName = file.FileName;
CloudBlockBlob blob = container.GetBlockBlobReference(fileName);
using (var memoryStream = new MemoryStream())
{
// await file.CopyToAsync(memoryStream);
// await blob.UploadFromStreamAsync(memoryStream);
// upload only when the 'memoryStream' is ready
Task.Factory.StartNew(() => file.CopyToAsync(memoryStream))
.ContinueWith(m => blob.UploadFromStreamAsync(m.Result)); // ??
}
return blob.Uri.AbsoluteUri;
}
如果不是第二个变量:
public string UploadFile(string containerName, IFormFile file)
{
var container = GetContainer(containerName);
var fileName = file.FileName;
CloudBlockBlob blob = container.GetBlockBlobReference(fileName);
using (var memoryStream = new MemoryStream())
{
file.CopyToAsync(memoryStream).Wait();
blob.UploadFromStreamAsync(memoryStream).Wait();
//Task.Factory.StartNew(() => file.CopyToAsync(memoryStream))
// .ContinueWith(m => blob.UploadFromStreamAsync(m.Result)); // ??
}
return blob.Uri.AbsoluteUri;
}