Skip to content

Commit

Permalink
Fixed continuely running task bug
Browse files Browse the repository at this point in the history
  • Loading branch information
ProgTrade committed Jun 5, 2015
1 parent 6be29da commit 26aba47
Showing 1 changed file with 177 additions and 166 deletions.
343 changes: 177 additions & 166 deletions nUpdate/Updating/UpdaterUi.cs
Expand Up @@ -141,197 +141,208 @@ public void ShowUserInterface()

#if PROVIDE_TAP


// TAP
TaskEx.Run(async delegate
try
{
if (!UseHiddenSearch)
_context.Post(searchDialog.ShowModalDialog, null);

try
{
_updatesAvailable = await _updateManager.SearchForUpdatesTask();
}
catch (OperationCanceledException)
{
return;
}
catch (Exception ex)
// TAP
TaskEx.Run(async delegate
{
if (UseHiddenSearch)
_context.Send(
o =>
Popup.ShowPopup(SystemIcons.Error, _lp.UpdateSearchErrorCaption, ex,
PopupButtons.Ok), null);
else
if (!UseHiddenSearch)
_context.Post(searchDialog.ShowModalDialog, null);

try
{
searchDialog.Fail(ex);
_context.Post(searchDialog.CloseDialog, null);
_updatesAvailable = await _updateManager.SearchForUpdatesTask();
}
return;
}

if (!UseHiddenSearch)
{
_context.Post(searchDialog.CloseDialog, null);
await TaskEx.Delay(100); // Prevents race conditions that cause that the UpdateSearchDialog can't be closed before further actions are done
}

if (_updatesAvailable)
{
newUpdateDialog.PackageSize = _updateManager.TotalSize;
newUpdateDialog.PackageConfigurations = _updateManager.PackageConfigurations;
var newUpdateDialogReference = new DialogResultReference();
_context.Send(newUpdateDialog.ShowModalDialog, newUpdateDialogReference);
if (newUpdateDialogReference.DialogResult == DialogResult.Cancel)
catch (OperationCanceledException)
{
return;
}
else if (!_updatesAvailable && UseHiddenSearch)
return;
else if (!_updatesAvailable && !UseHiddenSearch)
{
var noUpdateDialogResultReference = new DialogResultReference();
}
catch (Exception ex)
{
if (UseHiddenSearch)
_context.Send(
o =>
Popup.ShowPopup(SystemIcons.Error, _lp.UpdateSearchErrorCaption, ex,
PopupButtons.Ok), null);
else
{
searchDialog.Fail(ex);
_context.Post(searchDialog.CloseDialog, null);
}
return;
}

if (!UseHiddenSearch)
_context.Send(noUpdateDialog.ShowModalDialog, noUpdateDialogResultReference);
}
{
_context.Post(searchDialog.CloseDialog, null);
await TaskEx.Delay(100);
// Prevents race conditions that cause that the UpdateSearchDialog can't be closed before further actions are done
}

downloadDialog.PackagesCount = _updateManager.PackageConfigurations.Count();
_context.Post(downloadDialog.ShowModalDialog, null);
if (_updatesAvailable)
{
newUpdateDialog.PackageSize = _updateManager.TotalSize;
newUpdateDialog.PackageConfigurations = _updateManager.PackageConfigurations;
var newUpdateDialogReference = new DialogResultReference();
_context.Send(newUpdateDialog.ShowModalDialog, newUpdateDialogReference);
if (newUpdateDialogReference.DialogResult == DialogResult.Cancel)
return;
}
else if (!_updatesAvailable && UseHiddenSearch)
return;
else if (!_updatesAvailable && !UseHiddenSearch)
{
var noUpdateDialogResultReference = new DialogResultReference();
if (!UseHiddenSearch)
_context.Send(noUpdateDialog.ShowModalDialog, noUpdateDialogResultReference);
return;
}

try
{
progressIndicator.ProgressChanged += (sender, args) =>
downloadDialog.ProgressPercentage = (int) args.Percentage;
await _updateManager.DownloadPackagesTask(progressIndicator);
}
catch (OperationCanceledException)
{
return;
}
catch (Exception ex)
{
downloadDialog.Fail(ex);
_context.Send(downloadDialog.CloseDialog, null);
return;
}
downloadDialog.PackagesCount = _updateManager.PackageConfigurations.Count();
_context.Post(downloadDialog.ShowModalDialog, null);

_context.Send(downloadDialog.CloseDialog, null);
try
{
progressIndicator.ProgressChanged += (sender, args) =>
downloadDialog.ProgressPercentage = (int) args.Percentage;
await _updateManager.DownloadPackagesTask(progressIndicator);
}
catch (OperationCanceledException)
{
return;
}
catch (Exception ex)
{
downloadDialog.Fail(ex);
_context.Send(downloadDialog.CloseDialog, null);
return;
}

bool isValid = false;
try
{
isValid = _updateManager.ValidatePackages();
}
catch (FileNotFoundException)
{
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.PackageValidityCheckErrorCaption,
_lp.PackageNotFoundErrorText,
PopupButtons.Ok), null);
}
catch (ArgumentException)
{
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.PackageValidityCheckErrorCaption,
_lp.InvalidSignatureErrorText, PopupButtons.Ok), null);
}
catch (Exception ex)
{
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.PackageValidityCheckErrorCaption,
ex, PopupButtons.Ok), null);
}
_context.Send(downloadDialog.CloseDialog, null);

if (!isValid)
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.InvalidSignatureErrorCaption,
_lp.SignatureNotMatchingErrorText,
PopupButtons.Ok), null);
else
_updateManager.InstallPackage();
bool isValid = false;
try
{
isValid = _updateManager.ValidatePackages();
}
catch (FileNotFoundException)
{
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.PackageValidityCheckErrorCaption,
_lp.PackageNotFoundErrorText,
PopupButtons.Ok), null);
}
catch (ArgumentException)
{
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.PackageValidityCheckErrorCaption,
_lp.InvalidSignatureErrorText, PopupButtons.Ok), null);
}
catch (Exception ex)
{
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.PackageValidityCheckErrorCaption,
ex, PopupButtons.Ok), null);
}

if (!isValid)
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.InvalidSignatureErrorCaption,
_lp.SignatureNotMatchingErrorText,
PopupButtons.Ok), null);
else
_updateManager.InstallPackage();
});
}
finally
{
_isTaskRunning = false;
});

}

#else
//EAP
_updateManager.UpdateSearchFinished += SearchFinished;
_updateManager.UpdateSearchFinished += searchDialog.Finished;
_updateManager.UpdateSearchFailed += searchDialog.Failed;
_updateManager.PackagesDownloadProgressChanged += downloadDialog.ProgressChanged;
_updateManager.PackagesDownloadFinished += downloadDialog.Finished;
_updateManager.PackagesDownloadFailed += downloadDialog.Failed;

Task.Factory.StartNew(() =>
try
{
_updateManager.SearchForUpdatesAsync();
if (!UseHiddenSearch)
{
var searchDialogResultReference = new DialogResultReference();
_context.Send(searchDialog.ShowModalDialog, searchDialogResultReference);
_context.Send(searchDialog.CloseDialog, null);
if (searchDialogResultReference.DialogResult == DialogResult.Cancel)
return;
}
else
//EAP
_updateManager.UpdateSearchFinished += SearchFinished;
_updateManager.UpdateSearchFinished += searchDialog.Finished;
_updateManager.UpdateSearchFailed += searchDialog.Failed;
_updateManager.PackagesDownloadProgressChanged += downloadDialog.ProgressChanged;
_updateManager.PackagesDownloadFinished += downloadDialog.Finished;
_updateManager.PackagesDownloadFailed += downloadDialog.Failed;

Task.Factory.StartNew(() =>
{
_searchResetEvent.WaitOne();
}
_updateManager.SearchForUpdatesAsync();
if (!UseHiddenSearch)
{
var searchDialogResultReference = new DialogResultReference();
_context.Send(searchDialog.ShowModalDialog, searchDialogResultReference);
_context.Send(searchDialog.CloseDialog, null);
if (searchDialogResultReference.DialogResult == DialogResult.Cancel)
return;
}
else
{
_searchResetEvent.WaitOne();
}
if (_updatesAvailable)
{
newUpdateDialog.PackageSize = _updateManager.TotalSize;
newUpdateDialog.PackageConfigurations = _updateManager.PackageConfigurations;
if (_updatesAvailable)
{
newUpdateDialog.PackageSize = _updateManager.TotalSize;
newUpdateDialog.PackageConfigurations = _updateManager.PackageConfigurations;
var newUpdateDialogResultReference = new DialogResultReference();
_context.Send(newUpdateDialog.ShowModalDialog, newUpdateDialogResultReference);
if (newUpdateDialogResultReference.DialogResult == DialogResult.Cancel)
var newUpdateDialogResultReference = new DialogResultReference();
_context.Send(newUpdateDialog.ShowModalDialog, newUpdateDialogResultReference);
if (newUpdateDialogResultReference.DialogResult == DialogResult.Cancel)
return;
}
else if (!_updatesAvailable && UseHiddenSearch)
return;
}
else if (!_updatesAvailable && UseHiddenSearch)
return;
else if (!_updatesAvailable && !UseHiddenSearch)
{
_context.Send(noUpdateDialog.ShowModalDialog, null);
_context.Send(noUpdateDialog.CloseDialog, null);
return;
}
else if (!_updatesAvailable && !UseHiddenSearch)
{
_context.Send(noUpdateDialog.ShowModalDialog, null);
_context.Send(noUpdateDialog.CloseDialog, null);
return;
}
_updateManager.DownloadPackagesAsync();
_updateManager.DownloadPackagesAsync();
var downloadDialogResultReference = new DialogResultReference();
_context.Send(downloadDialog.ShowModalDialog, downloadDialogResultReference);
_context.Send(downloadDialog.CloseDialog, null);
if (downloadDialogResultReference.DialogResult == DialogResult.Cancel)
return;
var downloadDialogResultReference = new DialogResultReference();
_context.Send(downloadDialog.ShowModalDialog, downloadDialogResultReference);
_context.Send(downloadDialog.CloseDialog, null);
if (downloadDialogResultReference.DialogResult == DialogResult.Cancel)
return;
bool isValid = false;
try
{
isValid = _updateManager.ValidatePackages();
}
catch (FileNotFoundException)
{
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.PackageValidityCheckErrorCaption,
_lp.PackageNotFoundErrorText,
PopupButtons.Ok), null);
}
catch (ArgumentException)
{
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.PackageValidityCheckErrorCaption,
_lp.InvalidSignatureErrorText, PopupButtons.Ok), null);
}
catch (Exception ex)
{
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.PackageValidityCheckErrorCaption,
ex, PopupButtons.Ok), null);
}
bool isValid = false;
try
{
isValid = _updateManager.ValidatePackages();
}
catch (FileNotFoundException)
{
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.PackageValidityCheckErrorCaption,
_lp.PackageNotFoundErrorText,
PopupButtons.Ok), null);
}
catch (ArgumentException)
{
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.PackageValidityCheckErrorCaption,
_lp.InvalidSignatureErrorText, PopupButtons.Ok), null);
}
catch (Exception ex)
{
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.PackageValidityCheckErrorCaption,
ex, PopupButtons.Ok), null);
}
if (!isValid)
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.InvalidSignatureErrorCaption,
_lp.SignatureNotMatchingErrorText,
PopupButtons.Ok), null);
else
_updateManager.InstallPackage();
if (!isValid)
_context.Send(o => Popup.ShowPopup(SystemIcons.Error, _lp.InvalidSignatureErrorCaption,
_lp.SignatureNotMatchingErrorText,
PopupButtons.Ok), null);
else
_updateManager.InstallPackage();
});
}
finally
{
_isTaskRunning = false;
});
}
#endif
}

Expand Down

0 comments on commit 26aba47

Please sign in to comment.