Fixed Subtitle-Thread crashing when exiting before the subtitles are fully played back

This commit is contained in:
CreepyCrafter24 2019-09-28 18:40:40 +02:00
parent 91c4e4a898
commit d3494903b8
3 changed files with 23 additions and 19 deletions

View File

@ -415,7 +415,7 @@ namespace LaptopSimulator2015
this.levelWindowHeaderExit.TabIndex = 2; this.levelWindowHeaderExit.TabIndex = 2;
this.levelWindowHeaderExit.Text = "r"; this.levelWindowHeaderExit.Text = "r";
this.levelWindowHeaderExit.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.levelWindowHeaderExit.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.levelWindowHeaderExit.Click += new System.EventHandler(this.LevelWindowHeaderExit_Click); this.levelWindowHeaderExit.Click += new System.EventHandler(this.CloseMinigame);
// //
// levelWindowIcon // levelWindowIcon
// //
@ -474,7 +474,7 @@ namespace LaptopSimulator2015
this.minigameClose.Text = "r"; this.minigameClose.Text = "r";
this.minigameClose.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.minigameClose.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.minigameClose.Visible = false; this.minigameClose.Visible = false;
this.minigameClose.Click += new System.EventHandler(this.MinigameClose_Click); this.minigameClose.Click += new System.EventHandler(this.CloseMinigame);
// //
// minigameClockT // minigameClockT
// //

View File

@ -219,13 +219,17 @@ namespace LaptopSimulator2015
string[] at = ((Goal)levels[i]).availableText; string[] at = ((Goal)levels[i]).availableText;
new Thread(() => new Thread(() =>
{ {
Invoke((MethodInvoker)delegate () { winDesktop.Enabled = false; }); try
playDialog(at).Join();
Invoke((MethodInvoker)delegate ()
{ {
winDesktop.Enabled = true; Invoke((MethodInvoker)delegate () { winDesktop.Enabled = false; });
updateIconVisibility(true); playDialog(at).Join();
}); Invoke((MethodInvoker)delegate ()
{
winDesktop.Enabled = true;
updateIconVisibility(true);
});
}
catch (InvalidOperationException) { }
}).Start(); }).Start();
} }
levels[i].desktopIcon.Visible = levels[i].availableAfter <= Settings.level; levels[i].desktopIcon.Visible = levels[i].availableAfter <= Settings.level;
@ -239,12 +243,16 @@ namespace LaptopSimulator2015
{ {
var tmp = new Thread(() => var tmp = new Thread(() =>
{ {
for (int i = 0; i < lines.Length; i++) try
{ {
Invoke((MethodInvoker)delegate () { subsLabel.Text = lines[i]; }); for (int i = 0; i < lines.Length; i++)
Thread.Sleep(2000); {
Invoke((MethodInvoker)delegate () { subsLabel.Text = lines[i]; });
Thread.Sleep(2000);
}
Invoke((MethodInvoker)delegate () { subsLabel.Text = ""; });
} }
Invoke((MethodInvoker)delegate () { subsLabel.Text = ""; }); catch (InvalidOperationException) { }
}); });
tmp.Start(); tmp.Start();
return tmp; return tmp;
@ -302,7 +310,7 @@ namespace LaptopSimulator2015
else else
{ {
if (levelWindow.Visible) if (levelWindow.Visible)
LevelWindowHeaderExit_Click(sender, new EventArgs()); Misc.closeGameWindow.Invoke();
} }
} }
} }
@ -386,7 +394,7 @@ namespace LaptopSimulator2015
} }
break; break;
case 2: case 2:
LevelWindowHeaderExit_Click(sender, e); Misc.closeGameWindow.Invoke();
if (levels[levelInd].availableAfter >= Settings.level) if (levels[levelInd].availableAfter >= Settings.level)
{ {
incrementLevel(); incrementLevel();
@ -467,8 +475,7 @@ namespace LaptopSimulator2015
} }
} }
private void LevelWindowHeaderExit_Click(object sender, EventArgs e) => Misc.closeGameWindow.Invoke(); private void CloseMinigame(object sender, EventArgs e) => Misc.closeGameWindow.Invoke();
private void MinigameClose_Click(object sender, EventArgs e) => Misc.closeGameWindow.Invoke();
#region Minigame #region Minigame
uint minigameTime = 0; uint minigameTime = 0;

View File

@ -1,5 +1,2 @@
Centralize distance functions
Fully implement new graphics on Goal and Level 3 Fully implement new graphics on Goal and Level 3
Handle Subtitle-Exception
https://devblogs.nvidia.com/hybridizer-csharp/ (?)
OS Install as Tutorial OS Install as Tutorial