FileStream fsIn = new FileStream(fileName, FileMode.Open, FileAccess.Read);            string basePath = System.IO.Path.GetDirectoryName(fileName);            int fileSize = (int) fsIn.Length;
            int segments = (int) (fileSize / m_segmentSize);
            int remainder = (int) (fileSize % m_segmentSize);            if (remainder > 0) segments++;            byte[] buffer = new byte[m_blockSize];            int bytesRead = 0;
            try 
            {
                for (int i = 0; i < segments; i++)
                {
                    FileStream fsOut = new FileStream(fileName + "." + i, FileMode.Create,FileAccess.Write);
                    int blocks = (int) (m_segmentSize / m_blockSize);                    for ( int j = 0; j < blocks ; j++)
                    {
                        bytesRead = fsIn.Read(buffer, 0, m_blockSize);
                        fsOut.Write(buffer, 0, bytesRead);
                    }
                    fsOut.Close();
                    OnProgessNotify ( Utilities.GetPercentComplete(  i+1 , segments ) );
                }                return (int) segments;
            }
            finally 
            {
                OnProgessNotify( 100 );
                if ( fsIn != null ) fsIn.Close();
            }