Мне нужен класс, который может выполнять задание по времени в потоке отдельно от его родителя, но я немного запутался в том, к какому потоку принадлежат разные части, любая информация будет оценена.Какой поток выполняет методы?
Моя цель состоит в том, чтобы выполнить задание с временным управлением независимо от родительского элемента, так как будет более одного из них, контролируемого родительским объектом-оболочкой.
Это то, что я придумал:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
public class timed_load_process {
private object _lock;
protected string process;
protected Timer timer;
protected bool _abort;
protected Thread t;
protected bool aborting { get { lock (_lock) { return this._abort; } } }
public timed_load_process(string process) {
this._abort = false;
this.process = process;
this.t = new Thread(new ThreadStart(this.threaded));
this.t.Start();
}
protected void threaded() {
this.timer = new Timer(new TimerCallback(this.tick), false, 0, 1000);
while (!this.aborting) {
// do other stuff
Thread.Sleep(100);
}
this.timer.Dispose();
}
protected void tick(object o) {
// do stuff
}
public void abort() { lock (_lock) { this._abort = true; } }
}
Так как таймер был экземпляр в потоке, это работать в потоке t
или внутри резьбы timed_load_process
, и я полагаю, что операция tick будет работать в том же потоке, что и таймер t
.
Окончание с:
public class timed_load_process : IDisposable {
private object _lock;
private bool _tick;
protected string process;
protected Timer timer;
protected bool _abort;
public bool abort {
get { lock (_lock) { return this._abort; } }
set { lock (_lock) { this.abort = value; } }
}
public timed_load_process(string process) {
this._abort = false;
this.process = process;
this.timer = new Timer(new TimerCallback(this.tick), false, 0, 1000);
}
public void Dispose() {
while (this._tick) { Thread.Sleep(100); }
this.timer.Dispose();
}
protected void tick(object o) {
if (!this._tick) {
this._tick = true;
// do stuff
this._tick = false;
}
}
}
В отличие от сайтов на форуме, мы не используем «Спасибо» или «Любая помощь оценена» или подписи на [so]. См. «[Должны ли« Привет »,« спасибо », теги и приветствия удалены из сообщений?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be –
Какой вид таймера - нет пространств имен? –
Я вставил надписи над текстом, я сделал это таймер System.Threading. – marts