У меня есть ползунок и с изменением знака слайдера мне нужно выполнить некоторые вычисления. Поскольку расчет принимает 100-200 мс, слайдер застревает. Есть ли способ сделать эти вычисления backgroud (В этом случае мне нужно получить доступ к некоторым значениям из основного потока) и по-прежнему показывать последний результат.Выполнение фоновой операции при изменении ползунка в C#
ответ
С BackgroundWorker Thread вы можете получить доступ к главному тему с
Application.Current.Dispatcher
В коде вы могли бы что-то вроде функции X (интермедиат newSliderValue) { UpdateUI (() => {SliderControl.Value = newSliderValue ;}); }
И призыв к dispactcher выглядит
private void UpdateUI(Action methode)
{
Application.Current.Dispatcher.Invoke(methode, DispatcherPriority.Normal);
}
Если длинные вычисления IO ограничивающих операции лучшим способ заключается в использовании асинхронного/ОЖИДАНИЕ функции. Отметьте свой обработчик в асинхронных и чем использовать асинхронный/Await:
var res = await Task.Run(() =>
{
Thread.Sleep(2000); // perform long calculation
return e.NewValue*2;
}
);
MessageBox.Show(res.ToString(CultureInfo.InvariantCulture));
Обратите внимание, что вам не нужно какое-то вызов к Acces графического интерфейса нитки после операции закончена.
Если операции CPU-ограничивающее вы можете использовать такие задачи, как это:
var t = Task.Run(() =>
{
Thread.Sleep(2000); // perform long calculation
return e.NewValue*2;
}).ContinueWith(task => Dispatcher.Invoke(() => MessageBox.Show(task.Result.ToString(CultureInfo.InvariantCulture))));
Обратите внимание, что в этом случае я использую диспетчер для WPF (в WinForm форме класса имеет Invoke() метода сами по себе) ,
Также, когда вы начинаете расчеты, имеет смысл заблокировать слайдер до тех пор, пока вычисления не будут закончены, потому что пользователь может изменить его снова и снова.
- 1. Переход от фоновой операции
- 2. Обнаружение фоновой операции
- 3. Получить значение диапазона ползунка при изменении yii2
- 4. Прохождение всех входов класса при изменении ползунка
- 5. Правильное соотношение значения ползунка при изменении границы
- 6. jQuery UI: действие при изменении положения ползунка
- 7. Запуск фоновой задачи при изменении значения java
- 8. Выполнение функции при завершении операции
- 9. Операции пакетной обработки и фоновой обработки
- 10. Выполнение фоновой задачи в Javascript
- 11. Выполнение фоновой задачи в java
- 12. Ожидание фоновой операции для завершения
- 13. Выполнение действия при изменении переменной
- 14. Выполнение действия при изменении tabBarController
- 15. Требуется помощь при остановке таймера при изменении ползунка
- 16. Выполнение при изменении форматирования источника?
- 17. Выполнение операции при использовании str.find() в строке C++ (без подстроки)
- 18. Libssh2: предотвратить выполнение фоновой задачи
- 19. необходимо обновить uilabel программно в виде таблицы при изменении ползунка
- 20. Как отключить сеанс в javascript при изменении ползунка
- 21. Как сделать выполнение фоновой заготовки в процессе
- 22. Изображение ползунка в C#?
- 23. Выполнение задач фоновой сети циклически при возможности отменить весь цикл
- 24. Выполнение операции MongoDB в PHP
- 25. LaTeX: Условное выполнение оператора при изменении переменной
- 26. Выполнение операции сдвига в java
- 27. Как обновить подклассу UIView для рисования при изменении ползунка?
- 28. Как добавить класс к загрузочным миниатюрам при изменении ползунка
- 29. Передача данных на угловую функцию при изменении ввода ползунка html
- 30. Анимация ползунка при изменении значения параметра слайдера jQuery UI?
ASP.NET или приложение для Windows? – Izikon
И если Windows, это WPF или Windows Forms? –