Esempio n. 1
0
        /// <summary>
        /// 拷贝数据
        /// </summary>
        private void StartCopy()
        {
            try
            {
                #region
                byte[] byteCache = new byte[_iCacheSize];
                // 新文件大小
                long _iCount = 0;
                // 原文件大小
                long _iSize = fOperate.FormerFileSize;
                // 文件读取位置
                long i = _iSize / 100;
                fOperate.Position = fOperate.FreshFileSize;
                if (_iSize > _iCacheSize)
                {
                    for (_iCount = fOperate.FreshFileSize; _iCount + _iCacheSize < _iSize; _iCount += _iCacheSize)
                    {
                        if (_blState)
                        {
                            fOperate.WriteAppend(fOperate.Read(byteCache, _iCacheSize), _iCacheSize);
                            GuageEventFun(Convert.ToInt32(_iCount / i));
                        }
                        else
                        {
                            return;
                        }
                    }
                }
                if (!_blState)
                {
                    return;
                }
                if (_iSize > fOperate.Position)
                {
                    int iSpare = Convert.ToInt32(_iSize - Convert.ToInt64(fOperate.Position));
                    byteCache = new byte[iSpare];
                    fOperate.WriteAppend(fOperate.Read(byteCache, iSpare), iSpare);

                    GuageEventFun(100);
                }
                byteCache = null;
                fOperate.Dispose();
                #endregion
            }
            catch (System.OutOfMemoryException)
            {
            }
            catch (System.IO.IOException)
            {
            }
            CopyCompleteFun();
        }