Имеется приложение 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.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Есть DataGridView, который отображает коллекцию экземпляров SomeClass
Добрый день! Подскажите, где можно скачать готовые стили для компонент WPF?
Есть несколько классов с параметрами, задача-один из них заменить или добавить класс-конструктор Задачка лёгкая, уровня начальной школы,...