-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgressFileStream.cs
More file actions
38 lines (32 loc) · 989 Bytes
/
Copy pathProgressFileStream.cs
File metadata and controls
38 lines (32 loc) · 989 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace denPusher
{
public class ProgressFileStream : FileStream
{
public event EventHandler<long> ProgressChanged;
private long totalRead = 0;
public ProgressFileStream(string path, FileMode mode) : base(path, mode)
{
}
public override int Read(byte[] array, int offset, int count)
{
var bytesRead = base.Read(array, offset, count);
totalRead += bytesRead;
ProgressChanged?.Invoke(totalRead, this.Length);
return bytesRead;
}
public override void Write(byte[] array, int offset, int count)
{
base.Write(array, offset, count);
OnProgressChanged(count);
}
protected virtual void OnProgressChanged(long bytes)
{
ProgressChanged?.Invoke(this, bytes);
}
}
}