Доброе время суток. Имеются срабатывающие в таймере событие, 3 потока и класс, передающий в поток 2 параметра (объект из очереди и время "эмуляции" работы с этим объектом). Не могу сообразить, как создавать (вызывать?) потоки в момент срабатывания события (реализация события прописана в методе класса window). Возможно, вы предложите более разумный вариант.
Код класса с параметрами:
public class Window
{
private int blamkId; //для номера заявки
private int timeBlankWork; //время "обработки" одной заявки (задерка для sleep)
private bool isBusy1 = false;
public Window(int x, int y) //конструктор
{
this.blamkId = x;
this.timeBlankWork = y;
}
public void WinOption(int x, int y) //передаем нужные данные в поток
{
this.blamkId = x;
this.timeBlankWork = y;
}
public int Wind1() //для обработки
{
isBusy1 = true; //установка флага в "занято"
int BlankIdFin = blamkId;
Thread.Sleep(timeBlankWork);
isBusy1 = false;
return BlankIdFin;
}
public void Message() //метод, вызываемый при срабатывании события
{
MessageBox.Show("test event");
}
}
Код потока:
Window BigWin = new Window(0, 0); //создаем класс
BigWin.WinOption(WaitQue.Dequeue(), TimeBlankWork); //передаем параметры
Thread Work1 = new Thread(() => { result1 = BigWin.Wind1(); });
Work1.Start();
Work1.Join();
listBox1.Items.Insert(0, result1);
p.s. Сама идея - эмуляция СМО. Суть: таймер генерирует int x, отправляет его в очередь. Срабатывает событие, которое проверяет доступность одного из трех потоков. После "задержки", каждый поток возвращает результат в свой listbox.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости