/// <summary>
        /// Starts the thread creating the ISO file
        /// </summary>
        public void bgCreator_DoWork(object sender, DoWorkEventArgs e)
        {
            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();

            try
            {
                streamReader = new FileStream(Handle, FileAccess.Read, BUFFER);
                streamWriter = createFileStream(PathToIso, BUFFER);
                PathToIso    = streamWriter.Name;
                //streamWriter = new FileStream(PathToIso, FileMode.Create, FileAccess.Write, FileShare.Read, BUFFER);

                byte[] buffer = new byte[BUFFER];

                //Read buffer blocks from source and write them to the ISO file
                do
                {
                    /*if (bgCreator.CancellationPending)
                     * {
                     *  e.Cancel = true;
                     *  Stop();
                     *  break;
                     * }*/

                    streamReader.Read(buffer, 0, BUFFER);
                    streamWriter.Write(buffer, 0, BUFFER);
                    byte[] bufferClone = buffer.ToArray();

                    if (OnProgress != null)
                    {
                        //Progress in percent
                        int          percent = Convert.ToInt32((streamWriter.Length * 100) / MediumSize);
                        EventIsoArgs eArgs   = new EventIsoArgs(streamWriter.Position, percent);
                        OnProgress(eArgs);
                    }
                } while (streamReader.Position == streamWriter.Position);
            }
            catch (Exception ex)
            {
                if (OnMessage != null)
                {
                    EventIsoArgs eArgs = new EventIsoArgs("Error while creating the image: " + ex.Message);
                    OnMessage(eArgs);
                }
            }
            finally
            {
                CloseAll();

                if (OnFinish != null)
                {
                    EventIsoArgs eArgs = new EventIsoArgs(stopWatch.Elapsed);
                    OnFinish(eArgs);
                }
            }
        }
        /// <summary>
        /// Aborts the creation of the image and deletes it
        /// </summary>
        public void Stop()
        {
            CloseAll();

            if (File.Exists(PathToIso))
            {
                File.Delete(PathToIso);
            }

            if (OnMessage != null)
            {
                EventIsoArgs e = new EventIsoArgs(@"Creation of the images was canceled");
                OnMessage(e);
            }
        }
        /// <summary>
        /// Starts the thread creating the ISO file
        /// </summary>
        public void bgCreator_DoWork(object sender, DoWorkEventArgs e)
        {
            Stopwatch stopWatch = new Stopwatch();

            stopWatch.Start();

            try
            {
                DriveInfo driveInfo = new DriveInfo(System.IO.Path.GetPathRoot(SourceDriveName));
                if (driveInfo.IsReady)
                {
                    DiscUtils.Iso9660.CDBuilder builder = new DiscUtils.Iso9660.CDBuilder();
                    builder.UseJoliet        = true;
                    builder.VolumeIdentifier = driveInfo.VolumeLabel;
                    DirectoryInfo di = new DirectoryInfo(SourceDriveName);
                    PopulateFromFolder(builder, di, di.FullName);
                    builder.Build(PathToIso);
                }
            }
            catch (Exception ex)
            {
                if (OnMessage != null)
                {
                    EventIsoArgs eArgs = new EventIsoArgs("Error while creating the image: " + ex.Message);
                    OnMessage(eArgs);
                }
            }
            finally
            {
                CloseAll();

                if (OnFinish != null)
                {
                    EventIsoArgs eArgs = new EventIsoArgs(stopWatch.Elapsed);
                    OnFinish(eArgs);
                }
            }
        }