public static void Main(string[] args) { MinHeap processes = new MinHeap(); RunThread r1 = new RunThread("Consumer-1", processes, RUN_SLEEP_INTERVAL); RunThread r2 = new RunThread("Consumer-2", processes, RUN_SLEEP_INTERVAL); Thread rt1 = new Thread(new ThreadStart(r1.run)); Thread rt2 = new Thread(new ThreadStart(r2.run)); rt1.Start(); rt2.Start(); AddThread a1 = new AddThread(processes, ADD_BATCH_NUM, ADD_BATCH_SIZE, ADD_PRIORITY_MIN, ADD_PRIORITY_MAX, ADD_SLEEP_INTERVAL, ADD_SLEEP_MIN, ADD_SLEEP_MAX); Thread at1 = new Thread(new ThreadStart(a1.run)); at1.Start(); at1.Join(); r1.noNewWork(); r2.noNewWork(); rt1.Join(); rt2.Join(); }
/// <summary> /// Добавить новую нить /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void addThreadToolStripMenuItem_Click(object sender, EventArgs e) { AddThread addThread = new AddThread(); addThread.Mode = FormMode.Add; addThread.ShowDialog(); if (addThread.Result == DialogResult.OK) { ThreadUnit thread = addThread.Thread; _configuration.ListThreadUnits.Add(thread); UpdateThreadsList(); _statusBarMessage = $"Добавлена новая нить [{thread.Name}]"; statusBar1.Text = _statusBarMessage; _modified = true; } addThread.Dispose(); }
/// <summary> /// Изменить параметры линии производства /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void editThreadToolStripMenuItem_Click(object sender, EventArgs e) { AddThread addThread = new AddThread(); ThreadUnit unit = _configuration.FindThreadByName(threadsList.Text); addThread.Mode = FormMode.Edit; addThread.Thread = unit; addThread.EditThread(); if (addThread.Result == DialogResult.OK) { ThreadUnit thread = addThread.Thread; _configuration.ReplaceThreadUnit(thread); UpdateThreadsList(); _statusBarMessage = $"Изменены параметры нити [{thread.Name}]"; statusBar1.Text = _statusBarMessage; _modified = true; } addThread.Dispose(); }