aboutsummaryrefslogtreecommitdiffstatsci
path: root/src/CrowThread.cs
diff options
context:
space:
mode:
authorj-p <jp.bruyere@live.be>2017-08-28 05:12:19 +0200
committerGitHub <noreply@github.com>2017-08-28 05:12:19 +0200
commit1d9aa6aa61da3dd5f1a1a488018ceb8b5a88f2af (patch)
treee7e9aed2ad7b0947855ce9d70a52267b128fec0c /src/CrowThread.cs
parentd6d7eda88ae12d6c47d6c158a5a9527a47447745 (diff)
full IDisposable implementation (#34)
* full implementation of IDisposable, not stable, lock and still leaking * override dispose in popper to handle _content not yet in graphic tree (when never shown), test focusedWidget when disposing * prevent canceling thread multiple times causing a deadlock * test parent type when trying to close window
Diffstat (limited to 'src/CrowThread.cs')
-rw-r--r--src/CrowThread.cs8
1 files changed, 3 insertions, 5 deletions
diff --git a/src/CrowThread.cs b/src/CrowThread.cs
index fbcdc956..823fe1a6 100644
--- a/src/CrowThread.cs
+++ b/src/CrowThread.cs
@@ -33,7 +33,7 @@ namespace Crow
/// Thread monitored by current interface with Finished event when state==Stopped
/// </summary>
public class CrowThread {
- public bool cancel = false;
+ public bool cancelRequested = false;
Thread thread;
public event EventHandler Finished;
public GraphicObject Host;
@@ -53,11 +53,9 @@ namespace Crow
}
public void Start() { thread.Start();}
public void Cancel(){
- if (thread.IsAlive){
- cancel = true;
- //cancelLoading = true;
+ if (thread.IsAlive & !cancelRequested){
+ cancelRequested = true;
thread.Join ();
- //cancelLoading = false;
}
lock (Host.currentInterface.CrowThreads)
Host.currentInterface.CrowThreads.Remove (this);