/// <summary>
		/// Fires the <see cref="ProcessFile">Process File delegate</see>.
		/// </summary>
		/// <param name="file">The file being processed.</param>
		/// <returns>A boolean indicating if execution should continue or not.</returns>
		public bool OnProcessFile(string file)
		{
			bool result = true;
			if (ProcessFile != null)
			{
				ScanEventArgs args = new ScanEventArgs(file);
				ProcessFile(this, args);
				result = args.ContinueRunning;
			}
			return result;
		}
		/// <summary>
		/// Raise the complete file event
		/// </summary>
		/// <param name="file">The file name</param>
		private void OnCompleteFile(string file)
		{
			if (CompletedFile != null)
			{
				ScanEventArgs args = new ScanEventArgs(file);
				CompletedFile(this, args);
				alive_ = args.ContinueRunning;
			}
		}
		private void ProcessFile(object sender, ScanEventArgs e)
		{
			if ((events_ != null) && (events_.ProcessFile != null))
			{
				events_.ProcessFile(sender, e);
			}

			if (e.ContinueRunning)
			{
				ZipEntry entry = entryFactory_.MakeFileEntry(e.Name);
				outputStream_.PutNextEntry(entry);
				AddFileContents(e.Name);
			}
		}
		/// <summary>
		/// Raise the ProcessFile event.
		/// </summary>
		/// <param name="file">The file name.</param>
		private void OnProcessFile(string file)
		{
			if (ProcessFile != null)
			{
				ScanEventArgs args = new ScanEventArgs(file);
				ProcessFile(this, args);
				alive_ = args.ContinueRunning;
			}
		}