public async Task<IBackgroundTransfer> CreateAsync(IUnixDirectoryEntry targetDirectory, string fileName, Stream data, CancellationToken cancellationToken)
{
var targetFolderItem = ((OneDriveDirectoryEntry)targetDirectory).Item;
var tempData = await _supportFactory.CreateTemporaryData(data, cancellationToken);
var targetId = GetFileId(targetFolderItem.Id, fileName);
var backgroundUploads = new BackgroundUpload(targetId, targetFolderItem.Id, fileName, tempData, this);
await _uploadsLock.WaitAsync(cancellationToken);
try
{
var fileId = GetFileId(targetFolderItem.Id, fileName);
_uploads.Add(fileId, backgroundUploads);
}
finally
{
_uploadsLock.Release();
}
return backgroundUploads;
}