Merge pull request #2837 from Bond-009/async2

Minor IAsyncDisposable improvements
This commit is contained in:
dkanada 2020-05-06 20:30:03 +09:00 committed by GitHub
commit c15463fa12
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 21 deletions

View file

@ -265,18 +265,21 @@ namespace MediaBrowser.Api.Images
{ {
Url = url, Url = url,
BufferContent = false BufferContent = false
}).ConfigureAwait(false); }).ConfigureAwait(false);
var ext = result.ContentType.Split('/').Last(); var ext = result.ContentType.Split('/')[^1];
var fullCachePath = GetFullCachePath(urlHash + "." + ext); var fullCachePath = GetFullCachePath(urlHash + "." + ext);
Directory.CreateDirectory(Path.GetDirectoryName(fullCachePath)); Directory.CreateDirectory(Path.GetDirectoryName(fullCachePath));
using (var stream = result.Content) var stream = result.Content;
await using (stream.ConfigureAwait(false))
{
var filestream = new FileStream(fullCachePath, FileMode.Create, FileAccess.Write, FileShare.Read, IODefaults.FileStreamBufferSize, true);
await using (filestream.ConfigureAwait(false))
{ {
using var filestream = new FileStream(fullCachePath, FileMode.Create, FileAccess.Write, FileShare.Read, IODefaults.FileStreamBufferSize, true);
await stream.CopyToAsync(filestream).ConfigureAwait(false); await stream.CopyToAsync(filestream).ConfigureAwait(false);
} }
}
Directory.CreateDirectory(Path.GetDirectoryName(pointerCachePath)); Directory.CreateDirectory(Path.GetDirectoryName(pointerCachePath));
File.WriteAllText(pointerCachePath, fullCachePath); File.WriteAllText(pointerCachePath, fullCachePath);

View file

@ -299,23 +299,27 @@ namespace MediaBrowser.Api
{ {
var result = await _providerManager.GetSearchImage(providerName, url, CancellationToken.None).ConfigureAwait(false); var result = await _providerManager.GetSearchImage(providerName, url, CancellationToken.None).ConfigureAwait(false);
var ext = result.ContentType.Split('/').Last(); var ext = result.ContentType.Split('/')[^1];
var fullCachePath = GetFullCachePath(urlHash + "." + ext); var fullCachePath = GetFullCachePath(urlHash + "." + ext);
Directory.CreateDirectory(Path.GetDirectoryName(fullCachePath)); Directory.CreateDirectory(Path.GetDirectoryName(fullCachePath));
using (var stream = result.Content) var stream = result.Content;
await using (stream.ConfigureAwait(false))
{ {
using var fileStream = new FileStream( var fileStream = new FileStream(
fullCachePath, fullCachePath,
FileMode.Create, FileMode.Create,
FileAccess.Write, FileAccess.Write,
FileShare.Read, FileShare.Read,
IODefaults.FileStreamBufferSize, IODefaults.FileStreamBufferSize,
true); true);
await using (fileStream.ConfigureAwait(false))
{
await stream.CopyToAsync(fileStream).ConfigureAwait(false); await stream.CopyToAsync(fileStream).ConfigureAwait(false);
} }
}
Directory.CreateDirectory(Path.GetDirectoryName(pointerCachePath)); Directory.CreateDirectory(Path.GetDirectoryName(pointerCachePath));
File.WriteAllText(pointerCachePath, fullCachePath); File.WriteAllText(pointerCachePath, fullCachePath);

View file

@ -209,13 +209,15 @@ namespace MediaBrowser.Api.Playback.Hls
try try
{ {
// Need to use FileShare.ReadWrite because we're reading the file at the same time it's being written // Need to use FileShare.ReadWrite because we're reading the file at the same time it's being written
using var fileStream = GetPlaylistFileStream(playlist); var fileStream = GetPlaylistFileStream(playlist);
await using (fileStream.ConfigureAwait(false))
{
using var reader = new StreamReader(fileStream); using var reader = new StreamReader(fileStream);
var count = 0; var count = 0;
while (!reader.EndOfStream) while (!reader.EndOfStream)
{ {
var line = reader.ReadLine(); var line = await reader.ReadLineAsync().ConfigureAwait(false);
if (line.IndexOf("#EXTINF:", StringComparison.OrdinalIgnoreCase) != -1) if (line.IndexOf("#EXTINF:", StringComparison.OrdinalIgnoreCase) != -1)
{ {
@ -227,6 +229,8 @@ namespace MediaBrowser.Api.Playback.Hls
} }
} }
} }
}
await Task.Delay(100, cancellationToken).ConfigureAwait(false); await Task.Delay(100, cancellationToken).ConfigureAwait(false);
} }
catch (IOException) catch (IOException)