/// <summary>
		/// Initialisiert die Updateform. Diese Methode wird automatisch vom <see cref="updateController"/> aufgerufen und muss daher nicht manuell aufgerufen werden.
		/// </summary>
		/// <param name="instance">Die Instanz des updateControllers</param>
		/// <param name="result">Das Suchresultat des UpdateControllers.</param>
		internal void initializeForm(updateController instance, UpdateResult result) {
			_updateDownloader = new updateDownloader(instance, result);

			_updateDownloader.downloadUpdatesCompleted += _updateDownloader_downloadUpdatesCompleted;
			_updateDownloader.downloadUpdatesProgressChanged += _updateDownloader_downloadUpdatesProgressChanged;

			Result = result;
		}
		/// <summary>
		/// Sucht nach Aktualisierungen während dem Benutzer ein modaler Dialog angezeigt wird.
		/// </summary>
		/// <param name="owner">Ein beliebiges Objekt, das <see cref="IWin32Window"/> implementiert, das das Fenster der obersten Ebene und damit den Besitzer des modalen Dialogfelds darstellt.</param>
		/// <returns><see cref="DialogResult.OK"/> wenn Aktualisierungen gefunden wurden, anderfalls <see cref="DialogResult.Cancel"/>.</returns>
		public DialogResult checkForUpdatesDialog(IWin32Window owner) {
			prepareUpdateCheck();

			/*using (var dialog = new updateViewDialog(this)) {
				dialog.ShowInTaskbar = showDialogsInTaskbar;
				dialog.availableViewStates = updateViewStates.Search;
				dialog.loadView<viewUpdateCheck>();
				return dialog.ShowDialog(owner);
			}*/

			// Old 1.5 Stuff - Obsolete
			using (var searchDlg = new updateSearchDialog(this)) {
				searchDlg.ShowInTaskbar = showDialogsInTaskbar;
				//Dialog anzeigen
				DialogResult cachedResult = searchDlg.ShowDialog(owner);

				currentUpdateResult = new UpdateResult(
					searchDlg.Result,
					searchDlg.Config,
					searchDlg.Changelogs);

				if (currentUpdateResult.UpdatesAvailable && alwaysRaiseUpdateFoundEvent) {
					if (updateFound != null)
						updateFound(this, new updateFoundEventArgs(currentUpdateResult));
				}

				return cachedResult;
			}
		}
		/// <summary>
		/// <para>Sucht nach verfügbaren Aktualisierungen.</para>
		/// <para>Informationen über die Updates können über die Eigenschaft <see cref="currentUpdateResult"/> abgerufen werden.</para>
		/// </summary>
		/// <returns>Gibt true zurück wenn ein Update gefunden wurde, andernfalls false.</returns>
		public bool checkForUpdates() {
			var schedueller = new ScheduledStart(
				_updateSettings.ProjektID,
				_updateSettings.Updateinterval,
				_updateSettings.CustomUpdateInterval);

			if (!schedueller.CanCheck()) {
				return false;
			}

			//Updatesuche vorbereiten
			prepareUpdateCheck();

			//Suchprovider initialisieren
			var sProvider = new searchProvider(this);

			//Updatesuche durchführen
			sProvider.executeSearch();
			schedueller.WriteCurrentDate();


			//Ergebnis auswerten
			if (sProvider.foundUpdates.Count > 0) {
				currentUpdateResult = new UpdateResult(
					sProvider.foundUpdates,
					sProvider.currentConfiguration,
					sProvider.correspondingChangelogs);
				return true;
			}
			currentUpdateResult = new UpdateResult(new List<updatePackage>(), sProvider.currentConfiguration,
			                                       new changelogDictionary());

			return false;
		}