--- trunk/libxmltv/Core/XMLTVInstance.cs 2013/03/08 03:41:18 45 +++ trunk/libxmltv/Core/XMLTVInstance.cs 2013/03/08 04:01:25 46 @@ -3,18 +3,22 @@ using System.Linq; using System.Text; using libxmltv.Interfaces; +using System.ComponentModel; namespace libxmltv.Core { internal class XMLTVRuntimeInstance : MarshalByRefObject, IXMLTVRuntimeInstance { - public XMLTVRuntimeInstance(string xmlfile) { CreateInstance(xmlfile); } - private void CreateInstance(string xmlfile) + public XMLTVRuntimeInstance(string xmlfile) : this(xmlfile, null) { } + public XMLTVRuntimeInstance(string xmlfile, EventHandler t) { CreateInstance(xmlfile,t); } + private void CreateInstance(string xmlfile, EventHandler t) { + CancelEvent = t; using (Instance = new XMLTVInstance(xmlfile, this)) { } } + internal XMLTVInstance Instance { get; private set; } #region IXMLTV_LOADER members @@ -32,7 +36,30 @@ // IsDisposing = true; // //throw new NotImplementedException(); //} - public bool IsDisposing { get; private set; } + //public bool IsDisposing { get; private set; } + + + private event EventHandler CancelEvent = null; + + public bool IsAborting + { + get + { + if (CancelEvent != null) + { + CancelEventArgs e = new CancelEventArgs(); + CancelEvent.Invoke(this, e); + if (e.Cancel) + { + xmltv_logger.Log.Verbose.Debug.WriteLine("Detected Instance abort event..."); + } + return e.Cancel; + } + return false; + } + } + + } internal class XMLTVInstance : IDisposable