コード例 #1
0
        public void StartNew(DownloadFilePart downloadFilePart)
        {
            Thread workerThread = new Thread(() =>
            {
                Download(downloadFilePart);
                _workingThreads.TryDequeue(out Thread thread);
            });

            workerThread.Start();
            _workingThreads.Enqueue(workerThread);
        }
コード例 #2
0
        private void Download(DownloadFilePart downloadFilePart)
        {
            while (_partQueue.TryDequeue(out int partNumber))
            {
                int offset = partNumber * PartLength;

                try
                {
                    byte[] data = downloadFilePart(offset, PartLength);
                    FilePartDownloadedEvent(partNumber, data);
                }
                catch (Exception e)
                {
                    ExceptionEvent(e);
                }
            }
        }