Я написал функцию, которая загружает что-то вроде рисунка из сети и использует его в событии с щелчком специальной кнопки. моя проблема в том, когда я нажимаю кнопку, и приложение начинает загружать рис из интернет, все мои элементы управления в форме, блокировка (пока процесс загрузки не завершен!) не просто управляет только всей моей формой. , так как я могу обрабатывать этот процесс в фоновом режиме приложения, и пользователь может работать с другим элементом управления в то же время.Заблокированные элементы управления во время специального процесса
1
A
ответ
1
Все, что вам нужно, это асинхронное программирование
здесь очень простой демо
private async void button1_Click(object sender, EventArgs e)
{
this.Text = "doing something...";
var result = await SomeHeavyWork();
this.Text = result.ToString();
}
private async Task<int> SomeHeavyWork()
{
using (var hc = new HttpClient())
{
var data = await hc.GetAsync("www.google.com");
return data.Content.Headers.Count();
}
}
Что здесь происходит?
- при нажатии
button1
,button1_Click
будет выполнен. - он сначала установил текст формы в «что-то ...»
- сейчас он ждет
SomeHeavyWork()
, чтобы завершить свою работу. - Теперь мы выходим из функции
button1_Click
и делаем то, что мы делали, прежде чем нажиматьbutton1
(выполняется цикл сообщений формы). но в другом месте мы выполняемSomeHeavyWork()
и ожидаем его. - , когда
SomeHeavyWork()
работа закончена, мы вернулись кbutton1_Click
и выполнили линиюthis.Text = result.ToString();
.
пожалуйста, прочитайте это msdn article
+0
Тпх человек, им будет читать асинхронное программирование, его помощь мне слишком – Falcon
Смежные вопросы
- 1. элементы управления во время выполнения
- 2. wxPython создает элементы управления во время выполнения
- 3. Отключить элементы управления во время получения Json
- 4. Как создать элементы управления во время выполнения?
- 5. ScriptManager.RegisterClientScriptBlock скрытые элементы управления во время выполнения
- 6. Элементы экрана, заблокированные картой?
- 7. считывает выходные данные процесса во время процесса
- 8. Во время специального распространения Xcode Crashed
- 9. Скопируйте TPanel и все его элементы управления во время выполнения
- 10. Генерировать управления во время выполнения
- 11. Панель UIProgressView во время процесса
- 12. SocketTimeoutException во время процесса подписания
- 13. Анимация во время процесса сохранения
- 14. Определить блокировки во время процесса
- 15. Экран Время выдергивания во время некоторого процесса
- 16. Произошла ошибка во время отчетного процесса
- 17. Определите во время выполнения, если элемент управления позволяет добавить к нему другие элементы управления во время разработки
- 18. Expose Элементы управления пользователя Внутренние элементы управления для окна свойств Visual Studio во время разработки
- 19. Элементы управления, добавленные в конструкторе, равны нулю во время Page_Load
- 20. Итерационные элементы управления формы, созданные во время выполнения
- 21. Каков наилучший способ заменить элементы управления во время выполнения?
- 22. Создать элементы управления в UIView во время выполнения?
- 23. Где элементы управления хранятся после их создания во время выполнения?
- 24. Как отключить дочерние элементы управления во время разработки?
- 25. Элементы управления Silverlight изменяют размеры во время выполнения
- 26. Как получить дочерние элементы составного элемента управления во время разработки
- 27. Рекомендации: добавьте элементы управления во время разработки или времени выполнения
- 28. Test Runner не может найти элементы управления во время воспроизведения
- 29. Асинхронно добавлять элементы управления в форму во время Form_Load
- 30. Динамически добавленные элементы управления отсутствуют во время GridView RowUpdating
все, что вам нужно, это асинхронное программирование – dotctor
http://msdn.microsoft.com/en-us/library/hh191443.aspx – dotctor