Check downloadEnded inside WaitToPosition
This commit is contained in:
parent
cfd2b7b7aa
commit
1ae767087f
@ -261,7 +261,6 @@ namespace AaxDecrypter
|
|||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Serilog.Log.Error(ex, "An error was encountered while downloading {Uri}", Uri);
|
Serilog.Log.Error(ex, "An error was encountered while downloading {Uri}", Uri);
|
||||||
IsCancelled = true;
|
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
@ -414,7 +413,7 @@ namespace AaxDecrypter
|
|||||||
var toRead = Math.Min(count, Length - Position);
|
var toRead = Math.Min(count, Length - Position);
|
||||||
WaitToPosition(Position + toRead);
|
WaitToPosition(Position + toRead);
|
||||||
|
|
||||||
return IsCancelled ? 0 : _readFile.Read(buffer, offset, count);
|
return _readFile.Read(buffer, offset, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override long Seek(long offset, SeekOrigin origin)
|
public override long Seek(long offset, SeekOrigin origin)
|
||||||
@ -436,14 +435,18 @@ namespace AaxDecrypter
|
|||||||
/// <param name="requiredPosition">The minimum required flished data length in <see cref="SaveFilePath"/>.</param>
|
/// <param name="requiredPosition">The minimum required flished data length in <see cref="SaveFilePath"/>.</param>
|
||||||
private void WaitToPosition(long requiredPosition)
|
private void WaitToPosition(long requiredPosition)
|
||||||
{
|
{
|
||||||
while (requiredPosition > WritePosition && !IsCancelled && hasBegunDownloading && !downloadedPiece.WaitOne(1000)) ;
|
while (requiredPosition > WritePosition
|
||||||
|
&& hasBegunDownloading
|
||||||
|
&& !IsCancelled
|
||||||
|
&& !downloadEnded.WaitOne(0)
|
||||||
|
&& !downloadedPiece.WaitOne(100)) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Close()
|
public override void Close()
|
||||||
{
|
{
|
||||||
IsCancelled = true;
|
IsCancelled = true;
|
||||||
|
|
||||||
while (downloadEnded is not null && !downloadEnded.WaitOne(1000)) ;
|
while (downloadEnded is not null && !downloadEnded.WaitOne(100)) ;
|
||||||
|
|
||||||
_readFile.Close();
|
_readFile.Close();
|
||||||
_writeFile.Close();
|
_writeFile.Close();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user