Do not block UI when restarting Steam

pull/98/head
Brian Lima 2 years ago
parent c278c6389b
commit 0f5de2088a

@ -155,7 +155,8 @@ namespace UWPHook
try
{
await ExportGames(restartSteam);
await ExportGames();
await RestartSteam(restartSteam);
msg = "Your apps were successfuly exported!";
if(!restartSteam)
@ -339,7 +340,7 @@ namespace UWPHook
/// </summary>
/// <param name="restartSteam"></param>
/// <returns></returns>
private async Task<bool> ExportGames(bool restartSteam)
private async Task<bool> ExportGames()
{
string[] tags = Settings.Default.Tags.Split(',');
string steam_folder = SteamManager.GetSteamFolder();
@ -470,49 +471,51 @@ namespace UWPHook
}
}
if(restartSteam)
{
Func<Process> getSteam = () => Process.GetProcessesByName("steam").SingleOrDefault();
return true;
}
Process steam = getSteam();
if (steam != null)
{
string steamExe = steam.MainModule.FileName;
private async Task<bool> RestartSteam(bool restartSteam)
{
Func<Process> getSteam = () => Process.GetProcessesByName("steam").SingleOrDefault();
//we always ask politely
Debug.WriteLine("Requesting Steam shutdown");
Process.Start(steamExe, "-exitsteam");
Process steam = getSteam();
if (steam != null)
{
string steamExe = steam.MainModule.FileName;
bool restarted = false;
Stopwatch watch = new Stopwatch();
watch.Start();
//we always ask politely
Debug.WriteLine("Requesting Steam shutdown");
Process.Start(steamExe, "-exitsteam");
//give it N seconds to sort itself out
int waitSeconds = 8;
while (watch.Elapsed.TotalSeconds < waitSeconds)
{
Thread.Sleep(TimeSpan.FromSeconds(0.5f));
if (getSteam() == null)
{
Debug.WriteLine("Restarting Steam");
Process.Start(steamExe);
restarted = true;
break;
}
}
bool restarted = false;
Stopwatch watch = new Stopwatch();
watch.Start();
if (!restarted)
//give it N seconds to sort itself out
int waitSeconds = 8;
while (!restarted || watch.Elapsed.TotalSeconds < waitSeconds)
{
await Task.Delay(TimeSpan.FromSeconds(0.5f));
if (getSteam() == null)
{
Debug.WriteLine("Steam instance not restarted");
MessageBox.Show("Failed to restart Steam, please launch it manually", "Error", MessageBoxButton.OK, MessageBoxImage.Warning);
return false;
Debug.WriteLine("Restarting Steam");
Process.Start(steamExe);
restarted = true;
break;
}
}
else
if (!restarted)
{
Debug.WriteLine("Steam instance not found to be restarted");
Debug.WriteLine("Steam instance not restarted");
MessageBox.Show("Failed to restart Steam, please launch it manually", "Error", MessageBoxButton.OK, MessageBoxImage.Warning);
return false;
}
}
else
{
Debug.WriteLine("Steam instance not found to be restarted");
}
return true;
}

Loading…
Cancel
Save