コード例 #1
0
        public void ReportCompletion()
        {
            var args = Args(fileSize);

            args.Progress.Complete = true;
            OnTransferProgress?.Invoke(this, args);
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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
        }
コード例 #4
0
 internal void ImmediatelyReportProgress(long bytesTransferred)
 {
     ReportProgress(bytesTransferred);
     OnTransferProgress?.Invoke(this, Args(fileSize));
 }