![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| alir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Как расширить свой класс методами класса Thread?
Пытался наследовать от Thread, но нельзя, так как он является sealed классом. Может существует интрефейс, содержащий методы Thread, чтоб можно было наследовать от него (как в java - Runnuble)? Как решить задачу? |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
А что за задача? |
|||
|
||||
| alir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Долго расскзывать. Все свелось к задаче создания класса, который содержит свои методы и переменные, а также методы класса Thread. Дополню сказанное лишь тем, что необходимы два метода класса Thread: suspend и resume. Как это сделать? |
|||
|
||||
| arilou |
|
||||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Вот если честно, не могу себе представить такой задачи, потому что класс Thread не просто так сделан sealed. Если нужно сделать, чтобы у класса был метод, выполняющийся в отдельном потоке, а класс предоставлял возможность приостановить и запустить заново его работу, то это можно сделать так:
Код не запускал, но все должно работать. При известном желании можно сделать так, что класс будет работать с любым потоковым методом (не только со своим). Это сообщение отредактировал(а) arilou - 6.12.2005, 19:51 |
||||
|
|||||
| alir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
arilou
А вот про причины я бы почитал. |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Класс Thread - это wrapper вокруг API'шных ф-ций по управлению потоками. Нецелесообразно давать возможность изменять его поведение (через наследование), потому что это может привести к непредсказуемым рез-татам. Задачи, которые нельзя решить с пом.наследования, решаются с помощью аггрегации (как в моем примере). |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
если руки не кривые, то и результаты будут предсказуемые, ИМХО -------------------- ![]() |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Согласен, но ты же не делаешь допущение, что у всех программистов не кривые руки ;) Вот и они не делают... |
|||
|
||||
| alir |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 383 Регистрация: 19.3.2005 Репутация: 2 Всего: 4 |
Java вот например разрешает наследовать класс Thread. |
|||
|
||||
| arilou |
|
|||
![]() Великий МунаБудвин ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2646 Регистрация: 15.7.2004 Где: город-герой Минск Репутация: 21 Всего: 61 |
Ну и что |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Есть такой паттерн, называется decorator, aka wrapper:
Объект класса Thread включается в качестве поля в класс MyThread, который выставляет наружу свои методы - такие же по сигнатуре, как и у Thread (они перенаправляют вызов к Thread-полю класса MyThread), а также дополнительные методы - те, которые необходимы для решения наших собственных задач. -------------------- ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |