百度首页 | 百度空间
 
查看文章
 
借助WebService实现多线程上传文件(结束)
2007年07月27日 星期五 12:19
  /// <summary>

        /// Sub-thread entry function

        /// </summary>

        /// <param name="stateinfo"></param>

        public void UploadFile( object stateinfo )

        {

            int nRealRead, nBufferSize;

            const int BUFFER_SIZE = 10240;

            using( FileStream fs = new FileStream( strFileName,

                       FileMode.Open, FileAccess.Read,

                       FileShare.Read ) )

            {

                string sName = strFileName.Substring( strFileName.LastIndexOf( "\\" ) + 1 );

                byte[] bBuffer = new byte[BUFFER_SIZE];//Init 10k buffer

                fs.Position = nStartPos;

                nRealRead = 0;

                do

                {

                    nBufferSize = BUFFER_SIZE;

                    if( nRealRead + BUFFER_SIZE > nTotalBytes )

                        nBufferSize = nTotalBytes - nRealRead;

                    nBufferSize = fs.Read( bBuffer, 0, nBufferSize );

                    if( nBufferSize == BUFFER_SIZE )

                        UploadHandle( sName,

                            nRealRead + nStartPos,

                            bBuffer );

                    else if( nBufferSize > 0 )

                    {

                        //Copy data

                        byte[] bytData = new byte[nBufferSize];

                        Array.Copy( bBuffer,0, bytData, 0, nBufferSize );

                        UploadHandle( sName,

                            nRealRead + nStartPos,

                            bytData );

                    }

                    nRealRead += nBufferSize;

                }

                while( nRealRead < nTotalBytes );

            }

            //Release signal

            ManualResetEvent mr = stateinfo as ManualResetEvent;

            if( mr != null )

                mr.Set();

        }

    }

}

       


类别:默认分类 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码:
 

     

©2008 Baidu