public static IAsset CreateAssetAndUploadNFilesUsingAsyncCall(int expected, CloudMediaContext mediaContext,string sourceFileName)
{
IAsset asset = mediaContext.Assets.Create("TestWithMultipleFiles", AssetCreationOptions.None);
VerifyAsset(asset);
DirectoryInfo info = null;
try
{
info = Directory.CreateDirectory(Guid.NewGuid().ToString());
var files = new List<Task>();
BlobTransferClient blobTransferClient = mediaContext.MediaServicesClassFactory.GetBlobTransferClient();
IAccessPolicy policy = mediaContext.AccessPolicies.Create("Write", TimeSpan.FromMinutes(20), AccessPermissions.Write);
ILocator locator = mediaContext.Locators.CreateSasLocator(asset, policy);
for (int i = 0; i < expected; i++)
{
string fileName;
string fullFilePath = CreateNewFileFromOriginal(info,sourceFileName, out fileName);
IAssetFile file = asset.AssetFiles.Create(fileName);
files.Add(file.UploadAsync(fullFilePath, blobTransferClient, locator, CancellationToken.None));
}
Task.WaitAll(files.ToArray());
foreach (Task task in files)
{
Assert.IsTrue(task.IsCompleted);
Assert.IsFalse(task.IsFaulted);
Assert.IsNull(task.Exception);
}
}
finally
{
if (info != null)
{
info.Delete(recursive: true);
}
}
return asset;
}