Free cookie consent management tool by TermsFeed Policy Generator

source: branches/3.3-Hive/sources/HeuristicLab.Hive/HeuristicLab.Hive.JobBase/3.3/JobBase.cs @ 4424

Last change on this file since 4424 was 4424, checked in by cneumuel, 14 years ago
  • Added and updated License Information in every file
  • Sort and remove usings in every file
  • Deleted obsolete DataAccess.ADOHelper
  • Deleted some obsolete files
File size: 2.8 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21
22using System;
23using System.Collections.Generic;
24using System.Linq;
25using System.Text;
26using System.Threading;
27using System.Xml;
28using HeuristicLab.Core;
29using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
30
31namespace HeuristicLab.Hive.JobBase {
32  [Serializable]
33  [StorableClass]
34  abstract public class JobBase : IJob {
35
36    private Thread thread = null;
37    public event EventHandler JobStopped;
38    public event EventHandler JobFailed;
39   
40    [Storable]
41    public long JobId { get; set; }
42
43    [Storable]
44    public double Progress { get; set; }
45
46    [Storable]
47    public bool Running { get; set; }
48
49    [Storable]
50    protected bool abort = false;   
51
52    abstract public void Run();
53    private void SecureRun() {
54      try {
55        Run();
56      }
57      catch (Exception ex) {
58        if (JobFailed != null)
59          JobFailed(this, new EventArgs());
60      }
61    }
62
63    public void Start() {
64      thread = new Thread(new ThreadStart(Run));     
65      thread.Start();
66      Running = true;
67    }
68
69    public void Stop() {
70      abort = true;       
71    }
72
73    protected void OnJobStopped() {
74      Console.WriteLine("Job has finished");
75      Running = false;
76      if (JobStopped != null)
77        JobStopped(this, new EventArgs());
78    }
79
80    //public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {
81    //  XmlNode node = base.GetXmlNode(name, document, persistedObjects);
82
83    //  XmlNode progr = document.CreateNode(XmlNodeType.Element, "Progress", null);
84    //  progr.InnerText = Convert.ToString(Progress);
85
86    //  node.AppendChild(progr);
87    //  return node;
88    //}
89    //public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {
90    //  base.Populate(node, restoredObjects);
91
92    //  XmlNode progr = node.SelectSingleNode("Progress");
93    //  Progress = Convert.ToDouble(progr.InnerText);
94    //}
95
96    public JobBase() {   
97    }
98  }
99}
Note: See TracBrowser for help on using the repository browser.