From d3494903b8261d7968c33370dd6f9d0a41be5faa Mon Sep 17 00:00:00 2001 From: CreepyCrafter24 <33260128+CreepyCrafter24@users.noreply.github.com> Date: Sat, 28 Sep 2019 18:40:40 +0200 Subject: [PATCH] Fixed Subtitle-Thread crashing when exiting before the subtitles are fully played back --- LaptopSimulator2015/FakeDesktop.Designer.cs | 4 +-- LaptopSimulator2015/FakeDesktop.cs | 35 ++++++++++++--------- ToDo.txt | 3 -- 3 files changed, 23 insertions(+), 19 deletions(-) diff --git a/LaptopSimulator2015/FakeDesktop.Designer.cs b/LaptopSimulator2015/FakeDesktop.Designer.cs index aea70b6..603c10b 100644 --- a/LaptopSimulator2015/FakeDesktop.Designer.cs +++ b/LaptopSimulator2015/FakeDesktop.Designer.cs @@ -415,7 +415,7 @@ namespace LaptopSimulator2015 this.levelWindowHeaderExit.TabIndex = 2; this.levelWindowHeaderExit.Text = "r"; 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 // @@ -474,7 +474,7 @@ namespace LaptopSimulator2015 this.minigameClose.Text = "r"; this.minigameClose.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; this.minigameClose.Visible = false; - this.minigameClose.Click += new System.EventHandler(this.MinigameClose_Click); + this.minigameClose.Click += new System.EventHandler(this.CloseMinigame); // // minigameClockT // diff --git a/LaptopSimulator2015/FakeDesktop.cs b/LaptopSimulator2015/FakeDesktop.cs index 7729382..4515772 100644 --- a/LaptopSimulator2015/FakeDesktop.cs +++ b/LaptopSimulator2015/FakeDesktop.cs @@ -219,13 +219,17 @@ namespace LaptopSimulator2015 string[] at = ((Goal)levels[i]).availableText; new Thread(() => { - Invoke((MethodInvoker)delegate () { winDesktop.Enabled = false; }); - playDialog(at).Join(); - Invoke((MethodInvoker)delegate () + try { - winDesktop.Enabled = true; - updateIconVisibility(true); - }); + Invoke((MethodInvoker)delegate () { winDesktop.Enabled = false; }); + playDialog(at).Join(); + Invoke((MethodInvoker)delegate () + { + winDesktop.Enabled = true; + updateIconVisibility(true); + }); + } + catch (InvalidOperationException) { } }).Start(); } levels[i].desktopIcon.Visible = levels[i].availableAfter <= Settings.level; @@ -239,12 +243,16 @@ namespace LaptopSimulator2015 { var tmp = new Thread(() => { - for (int i = 0; i < lines.Length; i++) + try { - Invoke((MethodInvoker)delegate () { subsLabel.Text = lines[i]; }); - Thread.Sleep(2000); + for (int i = 0; i < lines.Length; i++) + { + Invoke((MethodInvoker)delegate () { subsLabel.Text = lines[i]; }); + Thread.Sleep(2000); + } + Invoke((MethodInvoker)delegate () { subsLabel.Text = ""; }); } - Invoke((MethodInvoker)delegate () { subsLabel.Text = ""; }); + catch (InvalidOperationException) { } }); tmp.Start(); return tmp; @@ -302,7 +310,7 @@ namespace LaptopSimulator2015 else { if (levelWindow.Visible) - LevelWindowHeaderExit_Click(sender, new EventArgs()); + Misc.closeGameWindow.Invoke(); } } } @@ -386,7 +394,7 @@ namespace LaptopSimulator2015 } break; case 2: - LevelWindowHeaderExit_Click(sender, e); + Misc.closeGameWindow.Invoke(); if (levels[levelInd].availableAfter >= Settings.level) { incrementLevel(); @@ -467,8 +475,7 @@ namespace LaptopSimulator2015 } } - private void LevelWindowHeaderExit_Click(object sender, EventArgs e) => Misc.closeGameWindow.Invoke(); - private void MinigameClose_Click(object sender, EventArgs e) => Misc.closeGameWindow.Invoke(); + private void CloseMinigame(object sender, EventArgs e) => Misc.closeGameWindow.Invoke(); #region Minigame uint minigameTime = 0; diff --git a/ToDo.txt b/ToDo.txt index 880f938..96644f1 100644 --- a/ToDo.txt +++ b/ToDo.txt @@ -1,5 +1,2 @@ -Centralize distance functions Fully implement new graphics on Goal and Level 3 -Handle Subtitle-Exception -https://devblogs.nvidia.com/hybridizer-csharp/ (?) OS Install as Tutorial \ No newline at end of file