Здравствуйте, DnAp, Вы писали:
DA>Хотя вроде это не относится к делу, но хочу заметить что один или несколько WorkThread разбирающих очередь мне не подходят из за особенностей поставленных задач.
DA>Подскажите есть ли более верные способы решения этой задачи.
http://msdn.microsoft.com/ru-ru/library/system.threading.manualresetevent.aspx ?
void ClientThread()
{
Task t = Task.Factory.StartNew(CalculateSomething);
signal.WaitOne();
}
ManualResetEvent signal = new ManualResetEvent(false);
List<double> data = new List<double>();
Random r = new Random();
void CalculateSomething()
{
while(true)
{
data.Add(r.NextDouble());
Thread.Sleep(1000);
if (data.Count == 5)
signal.Set();
}
}
Приветствую.
У меня существует процесс допустим ClientThread1 который в случае необходимости запускает WorkThread.
WorkThread выполняет некоторый объем работы которая в большенстве случаев превышает объем работы необходимый для продолжения работы ClientThread1.
Как ClientThread1 узнать что можно продолжать работать?
Единственное что мне пришло в голову это написать код вроде
while(true){
lock(data){
if(data.success){
continue;
}
}
Sleep(10);
}
В данном решении приложение может простаивать до 10мс да еще и lock не быстрая штука.
Хотя вроде это не относится к делу, но хочу заметить что один или несколько WorkThread разбирающих очередь мне не подходят из за особенностей поставленных задач.
Подскажите есть ли более верные способы решения этой задачи.
Здравствуйте, ZloeBablo.
Спасибо. то что нужно