diff options
| author | jpbruyere <jp.bruyere@hotmail.com> | 2017-01-25 09:25:14 +0100 |
|---|---|---|
| committer | jpbruyere <jp.bruyere@hotmail.com> | 2017-01-25 09:25:14 +0100 |
| commit | 2ffad673c182840a70909a74ec3fd9f83cd76660 (patch) | |
| tree | d3a00b08a93b39bffdfb04ad9bc8d2ba50fd02b4 /src/CrowThread.cs | |
| parent | bfe9d9d6e361dfdfbb131e7a5f3aa3521eb92280 (diff) | |
CrowThread;AlwaysOnTop win;GTree explorer;
Diffstat (limited to 'src/CrowThread.cs')
| -rw-r--r-- | src/CrowThread.cs | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/CrowThread.cs b/src/CrowThread.cs new file mode 100644 index 00000000..dfdeda00 --- /dev/null +++ b/src/CrowThread.cs @@ -0,0 +1,58 @@ +// +// CrowThread.cs +// +// Author: +// Jean-Philippe Bruyère <jp.bruyere@hotmail.com> +// +// Copyright (c) 2017 jp +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. +using System; +using System.Threading; + +namespace Crow +{ + /// <summary> + /// Thread monitored by current interface with Finished event when state==Stopped + /// </summary> + public class CrowThread { + Thread thread; + public event EventHandler Finished; + public GraphicObject Host; + public CrowThread (GraphicObject host, ThreadStart start){ + thread = new Thread (start); + thread.IsBackground = true; + Host = host; + lock (Host.CurrentInterface.CrowThreads) + Host.CurrentInterface.CrowThreads.Add (this); + } + public void CheckState(){ + if (thread.ThreadState != ThreadState.Stopped) + return; + Finished.Raise (Host, null); + lock (Host.CurrentInterface.CrowThreads) + Host.CurrentInterface.CrowThreads.Remove (this); + } + public void Start() { thread.Start();} + public void Cancel(){ + if (thread.IsAlive){ + //cancelLoading = true; + thread.Join (); + //cancelLoading = false; + } + Host.CurrentInterface.CrowThreads.Remove (this); + } + } +} + |