Имеется приложение WPF, служит для дозирования жидкостей. При каждом новом дозировании необходимо проверить, сменилась ли емкость под дозатором, и если нет, то вывести сообщение о необходимости смены емкости. Есть такой код
public bool CheckChangeCupInThread()
{
if (_dispenser.Status.CupChanged == DispenserEnums.CupChanged.False)
{
var cupFormThread = new ThreadStart(CupWaitChangeForm);
var cupFormWaiter = new Thread(cupFormThread) {IsBackground = true};
cupFormWaiter.SetApartmentState(ApartmentState.STA);
var cupThread = new ThreadStart(WaitForCupChange);
var cupWaiter = new Thread(cupThread) {IsBackground = true};
cupWaiter.SetApartmentState(ApartmentState.STA);
cupFormWaiter.Start();
cupWaiter.Start();
do
{
//Wait for Cup to be changed or Cancel
} while (cupFormWaiter.IsAlive && cupWaiter.IsAlive);
var watch = new Stopwatch();
watch.Start();
if (cupFormWaiter.IsAlive)
{
cupFormWaiter.Abort();
cupFormWaiter.Join();
}
if (cupWaiter.IsAlive)
{
_dispenser.SurveillanceWorker.Continue = false;
cupWaiter.Join(200);
return false;
}
watch.Stop();
}
return true;
}
private void WaitForCupChange()
{
do
{
_dispenser.GetStatus();
} while (_dispenser.Status.CupChanged == DispenserEnums.CupChanged.False);
}
private void CupWaitChangeForm()
{
MessageBox.Show("Change please the cup", "Cup сhange", MessageBoxButtons.Cancel);
}
здесь _dispenser собственно и есть дозатор. Принцип такой: или емкость сменили, или клавишу "Отмена" в MessageBox нажали, потоки завершаются с соответствующим результатом. Все вроде нормально на первый взгляд. Но очень часто этот код приводит к аварийному завершению работы программы. Пробовал сделать тоже самое с тасками, но как-то не очень получилось, в многопоточных приложениях я новичок. Работаю с WPF и паттерном MVVM.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть DataGridView, который отображает коллекцию экземпляров SomeClass
Добрый день! Подскажите, где можно скачать готовые стили для компонент WPF?
Есть несколько классов с параметрами, задача-один из них заменить или добавить класс-конструктор Задачка лёгкая, уровня начальной школы,...