public void ReportCompletion() { var args = Args(fileSize); args.Progress.Complete = true; OnTransferProgress?.Invoke(this, args); }
private async Task ReportLoopAsync(CancellationToken cancellationToken) { long lastProgress = 0; while (!cancellationToken.IsCancellationRequested) { long currentProgress = Interlocked.Read(ref progress); long difference = currentProgress - lastProgress; if (difference != 0) { OnTransferProgress?.Invoke(this, Args(currentProgress)); lastProgress = currentProgress; } await Task.Delay(reportInterval); } }
public void CloneEvents(HttpRequestResponse source) { #if cooper || island || toffee foreach (TransferStartEventHandler item in source.OnTransferStart) { #if cooper OnTransferStart.add(item); #elif island OnTransferStart.Add(item); #elif toffee OnTransferStart.addObject(item); #endif } foreach (TransferEndEventHandler item in source.OnTransferEnd) { #if cooper OnTransferEnd.add(item); #elif island OnTransferEnd.Add(item); #else OnTransferEnd.addObject(item); #endif } foreach (TransferProgressEventHandler item in source.OnTransferProgress) { #if cooper OnTransferProgress.add(item); #elif island OnTransferProgress.Add(item); #else OnTransferProgress.addObject(item); #endif } #elif echoes OnTransferStart = source.OnTransferStart; OnTransferEnd = source.OnTransferEnd; OnTransferProgress = source.OnTransferProgress; #endif }
internal void ImmediatelyReportProgress(long bytesTransferred) { ReportProgress(bytesTransferred); OnTransferProgress?.Invoke(this, Args(fileSize)); }