Мне нужно разработать идеальный метод рабочих потоков. Метод должен выполнить следующие действия:Необходим шаблон для метода рабочей нити
- 1) извлечь что-то из очереди (скажем очередь строки) и сделать что-то
- 2) прекратить и вернуться, когда класс расположен
- 3) ждать некоторое событие (что очередь не пуста) и не потребляет процессор
- 4) выполняется в отдельном потоке
Основной нить добавит строку очереди и методы потоков сигнала, чтобы продолжить и сделать эту работу.
Я хочу, чтобы вы предоставили мне шаблон с необходимыми объектами синхронизации.
class MyClass, IDisposable
{
// Thread safe queue from third party
private ThreadSafeQueue<string> _workerQueue;
private Thread _workerThread;
public bool Initialize()
{
_workerThread = new Thread(WorkerThread).Start();
}
public AddTask(string object)
{
_workerQueue.Enqueue(object);
// now we must signal worker thread
}
// this is worker thread
private void WorkerThread()
{
// This is what worker thread must do
List<string> objectList = _workerQueue.EnqueAll
// Do something
}
// Yeap, this is Dispose
public bool Dispose()
{
}
}
Пожалуйста, разместите код, который вы написали. Люди обычно не любят просто писать свой код для вас. –
Mitch, сделаю. Согласитесь, я должен предоставить некоторый код для начала. –
[Код в моем вопросе (и ответы) несколько связан] (http://stackoverflow.com/q/4016239/486561). – Den