11 / 11 / 3
Регистрация: 16.10.2012
Сообщений: 139
|
|
1 | |
.NET 4.x Покажите пример работы делегата для параметризованного метода03.07.2014, 20:02. Показов 2804. Ответов 20
Метки нет Все метки)
(
Пересмотрел кучу примеров - но везде делегаты показаны без параметров. Покажите, пожалуйста, пример работы делегата для параметризованного метода. Допустим, я по нажатию на кнопку, хочу вызвать какой-то метод с параметрами, и выполнить его в отдельном потоке, вернув результат в исходный поток.
0
|
03.07.2014, 20:02 | |
Ответы с готовыми решениями:
20
Покажите пример работы с radioButton при разработке тестов При сравнении экземпляра делегата с именем метода, имя метода преобразуется автоматически в делегат или нет? |
![]() ![]() |
|
03.07.2014, 20:10 | 2 |
AlexanderWM,
1. Делегаты могут быть какими угодно, с параметрами или без. 2. Поток создать проблем нет, единственный момент-передать туда параметры. Для этого, ятд, лучше всего создать класс-обертку для потока. 3. Ну и вернуть из потока результат тоже проблем нет, используем события, при желании-со своим собственным аргументом. Ну и если речь за делегаты, можно потоки и с их помощью создать.
1
|
11 / 11 / 3
Регистрация: 16.10.2012
Сообщений: 139
|
|
03.07.2014, 20:30 [ТС] | 3 |
0
|
![]() ![]() |
|||||||||||
03.07.2014, 20:46 | 4 | ||||||||||
![]() Решение
AlexanderWM, вот вам пример с делегатом, с асинхронным запуском метода и событием)))
Класс
Добавлено через 11 минут AlexanderWM, советую начинать с чтения книг по этой тематике. Дело в том, что пример мне (или еще кому) написать не сложно, но есть один нюанс... Нюанс в том, что для меня, к примеру, этот код понятен, мне точно известно, для чего там каждая строчка. А если этих знаний нет, то простое копирование, без понимания теории-пустое дело. Код можно будет применить, но только по шаблону, поскольку без понимания каждой строки изменить его вам под ваши задачи будет сложно...
1
|
Master of Orion
![]() ![]() |
|
03.07.2014, 20:51 | 5 |
insite2012, кстати есть мнение, что делегат события следует переприсваивать в локальную переменную, иначе между строками 36 и 37 operationCompleted может измениться, например, на null
![]()
0
|
Master of Orion
![]() ![]() |
|
03.07.2014, 21:06 | 7 |
insite2012, http://stackoverflow.com/quest... hread-safe
Добавлено через 6 минут http://stackoverflow.com/quest... ead-safety
1
|
11 / 11 / 3
Регистрация: 16.10.2012
Сообщений: 139
|
|||||||||||
03.07.2014, 21:09 [ТС] | 9 | ||||||||||
А если у меня параметры разного типа? Первый string, второй bool, а третий вообще CookieCollection.
Вот в этом месте:
в GetResult заменить на public void GetResult(object[] list). А вот что вместо itfAR = res.BeginInvoke(strArr, new AsyncCallback(CallBack), null) писать? Я хочу использовать что-то вроде:
0
|
![]() ![]() |
|
03.07.2014, 21:14 | 10 |
AlexanderWM, никакой разницы нет. Главное-чтобы метод, который будет целью делегата соответствовал его сигнатуре( тип возвращающего значения, количество и тип параметров).
Добавлено через 2 минуты Кстати, передавать массив типа object - не лучшая идея. Придется же потом их явно приводить к нужному типу. Может передать просто несколько строго типизированных параметров?
0
|
11 / 11 / 3
Регистрация: 16.10.2012
Сообщений: 139
|
|
03.07.2014, 21:19 [ТС] | 11 |
Привести к типу просто (string)list[0], (bool)list[1]... А вот как передавать параметры я не знаю. Как?
0
|
Master of Orion
![]() ![]() |
||||||
03.07.2014, 21:24 | 12 | |||||
insite2012, по ссылкам все написано же
![]() ![]() ![]() Добавлено через 13 секунд AlexanderWM, передай структуру, делов-то ![]() Добавлено через 2 минуты а еще можно не париться и написать на замыканиях:
1
|
Master of Orion
![]() ![]() |
|
03.07.2014, 21:28 | 14 |
insite2012, lock очень медленный. Особенно по сравнению с отутствием синхронизации. Просто ради интереса, сравни время выполнения задачи суммы массивов через interlocked, AsParallel.Sum(), обычный lock и мьютекс/семафор
![]()
0
|
11 / 11 / 3
Регистрация: 16.10.2012
Сообщений: 139
|
||||||
03.07.2014, 21:37 [ТС] | 15 | |||||
Давайте по другому. Форма. Одна кнопка. Хочу получить содержимое какой-нибудь страницы в отдельном потоке. Делаю так.
0
|
![]() ![]() |
|
03.07.2014, 21:42 | 16 |
AlexanderWM, я бы сделал немного по другому. Создал бы класс-оболочку для потока, через конструктор передал бы все что надо в класс, подписался на событие завершения операции, запустил операцию и ждал бы сигнала.
1
|
Master of Orion
![]() ![]() |
||||||
03.07.2014, 22:30 | 17 | |||||
я бы так делал
![]()
1
|
11 / 11 / 3
Регистрация: 16.10.2012
Сообщений: 139
|
||||||
04.07.2014, 14:17 [ТС] | 20 | |||||
Про async/await в пятом шарпе я в курсе. Вот пытаюсь покрутить вариант Psilon'а.
Хочу вынести в отдельный метод. Но форма всё равно виснет. В чём ошибка?
0
|
04.07.2014, 14:17 | |
Помогаю со студенческими работами здесь
20
Покажите пример Покажите пример "ЗЕРКАЛА" Покажите пример Button'а
Покажите пример плейлиста Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
![]() |
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Protobuf в Go и новый Opaque API
golander 15.03.2025
Распределенные системы опираются на эффективные протоколы обмена данными — о чем вы, скорее всего, прекрасно знаете, если работаете с микросервисной архитектурой. Protocol Buffers (Protobuf) от. . .
|
Преобразование строк в C++: std::from_chars от C++17 до C++26
NullReferenced 15.03.2025
Конвертация строк в числа — задача, с которой сталкивается практически каждый C++ разработчик. Несмотря на кажущуюся простоту, эта операция таит множество подводных камней и неочевидных последствий. . .
|
Управление памятью в Java и новые сборщики мусора
Javaican 15.03.2025
Эффективное управление памятью всегда было ахиллесовой пятой высоконагруженных Java-приложений. При разработке на Java мы обычно полагаемся на автоматическое управление памятью через сборщики мусора. . .
|
Angular или Svelte - что выбрать?
Reangularity 15.03.2025
Во фронтенд-разработке Angular и Svelte представляют собой два совершенно разных подхода к решению схожих задач. Один — полноценный, мощный монолит с корпоративной поддержкой, другой — компактный,. . .
|
Spring Cloud микросервисы: обнаружение и отслеживание
Javaican 15.03.2025
В разработке корпоративных приложений всё больше команд обращают внимание на микросервисную архитектуру. Но с этой архитектурой приходят и специфичные трудности: как сервисам находить друг друга в. . .
|
Запуск контейнера Docker в облаке
Mr. Docker 15.03.2025
Что такое Docker-контейнер? Если коротко — это легковесный, автономный пакет, содержащий всё необходимое для запуска приложения: код, зависимости, библиотеки и конфигурации. Когда мы говорим о. . .
|
Осваиваем Kubernetes: Подробная шпаргалка
Mr. Docker 15.03.2025
Kubernetes — это открытая платформа для автоматизации развертывания, масштабирования и управления контейнеризированными приложениями. Он был создан для решения проблем, с которыми сталкиваются. . .
|
Лучшие PHP REST API фреймворки
Jason-Webb 15.03.2025
Современные PHP REST API фреймворки предлагают большой набор функциональности: от автоматической валидации данных и управления маршрутизацией до генерации документации и интеграции с различными. . .
|
Многопоточность в Java с Project Loom: виртуальные или обычные потоки
Javaican 15.03.2025
Многопоточность всегда была одноим из основных элементов в разработке современного программного обеспечения. Она позволяет приложениям обрабатывать несколько задач одновременно, что критично для. . .
|
Что нового в Swift 6 и особенности миграции
mobDevWorks 15.03.2025
Swift 6 — это новый крупный релиз языка программирования от Apple, анонсированный на WWDC 2024. Если вы следили за эволюцией Swift, то наверняка заметили, что многие значимые возможности, которые. . .
|