示例#1
0
        public override AbstractJob GetNextJob()
        {
            if (Core.State == CoreState.ShuttingDown)
            {
                Interrupted = true;
                return(null);
            }

            if (_contactEnumerator == null || !_contactEnumerator.MoveNext())
            {
                return(null);
            }

            if (Core.ProgressWindow != null)
            {
                if (Environment.TickCount - _lastProgressUpdate > 500 && _db.ContactCount > 0)
                {
                    Core.ProgressWindow.UpdateProgress(_contactIndex * 100 / _db.ContactCount,
                                                       "Importing Miranda database...", null);
                    _lastProgressUpdate = Environment.TickCount;
                }
            }
            DelegateJob job = new DelegateJob(new ImportContactDelegate(ImportContact),
                                              new[] { _contactEnumerator.Current, false });

            _contactIndex++;
            return(job);
        }
 private AsyncUserJob(DelegateJob callback, string title) : base(title)
 {
     thread = new Thread(delegate() {
         callback();
         Finish();
     });
     CanCancel        = true;
     CancelRequested += delegate {
         thread.Abort();
         Finish();
     };
     SetResources(Resource.Cpu);
 }
        private AsyncUserJob(DelegateJob callback, string title)
            : base(title)
        {
            thread = new Thread(delegate() {
                callback();
                Finish();
            });
            CanCancel = true;
            CancelRequested += delegate {
                thread.Abort();
                Finish();

            };
            SetResources(Resource.Cpu);
        }
示例#4
0
        internal TextIndexManager() : base(false)
        {
            _processPendingDocsDelegate = new DelegateJob("Indexing documents", new MethodInvoker(ProcessPendingDocs), new object[] {});

            if (Core.ResourceStore.PropTypes.Exist("QueuedForIndexing"))
            {
                Core.ResourceStore.PropTypes.Delete(Core.ResourceStore.PropTypes["QueuedForIndexing"].Id);
            }
            _statusWriter         = Core.UIManager.GetStatusWriter(typeof(FullTextIndexer), StatusPane.UI);
            _isJobTraceSuppressed = Core.SettingStore.ReadBool("TextIndexing", "SuppressJobTraces", false);

            _textIndexer              = new FullTextIndexer();
            _textIndexer.IndexLoaded += IndexLoadedNotification;

            Reenterable    = false;
            ThreadName     = "TextIndex AsyncProcessor";
            ThreadPriority = System.Threading.ThreadPriority.BelowNormal;
            ThreadStarted += TextIndexProcessor_ThreadStarted;

            Core.PluginLoader.RegisterResourceTextProvider(null, new AnnotationTextIndexProvider());
            Core.PluginLoader.RegisterResourceTextProvider(null, new TitleTextIndexProvider());

            //  Register predefined search providers
            CurrentSearchProvider = new OmeaGlobalSearchProvider();
            RegisterSearchProvider(CurrentSearchProvider, "Omea Search", _cStandardProvidersGroupName);
            RegisterSearchProvider(new OmeaQuickSearchProvider(), "Local Search", _cStandardProvidersGroupName);

            DefragmentIndexJob._textIndexManager = IndexingJob._textIndexManager = this;
            SetupDefragmentationQueue();

            _switchToIdleJob = new SwitchToIdleModeJob(this);
            QueueSwitchToIdleModeJob();

            Core.UIManager.RegisterIndicatorLight("Text Index Manager", this, 30,
                                                  MainFrame.LoadIconFromAssembly("textindex_idle.ico"),
                                                  MainFrame.LoadIconFromAssembly("textindex_busy.ico"),
                                                  MainFrame.LoadIconFromAssembly("textindex_stuck.ico"));
        }
 public static void Create(DelegateJob callback, string title)
 {
     var job = new AsyncUserJob(callback, title);
     job.Register();
 }
        public static void Create(DelegateJob callback, string title)
        {
            var job = new AsyncUserJob(callback, title);

            job.Register();
        }
示例#7
0
		public void JobThread(jobQ thejob) {
			DelegateJob delJob= new DelegateJob(DoOneJob);
			AsyncCallback callBackWhenDone = new AsyncCallback(this.EndJob);
			delJob.BeginInvoke(thejob,callBackWhenDone,null);
		}