From 2ffad673c182840a70909a74ec3fd9f83cd76660 Mon Sep 17 00:00:00 2001 From: jpbruyere Date: Wed, 25 Jan 2017 09:25:14 +0100 Subject: CrowThread;AlwaysOnTop win;GTree explorer; --- src/CrowThread.cs | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/CrowThread.cs (limited to 'src/CrowThread.cs') 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 +// +// 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 . +using System; +using System.Threading; + +namespace Crow +{ + /// + /// Thread monitored by current interface with Finished event when state==Stopped + /// + 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); + } + } +} + -- cgit v1.3.1-4-g156e