![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
AntonSaburov |
|
||||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 6 Всего: 118 |
Данная заметка не претендует на истину в последней инстанции - если кто-то нашел иное решение проблемы, милости прошу свои комментарии.
Итак, как только я стал разбираться с тредами мне само собой захотелось передать параметры в функцию, которая в этом треде исполняется. Увидев стандартное использование тредов, я не нашел возможности передать параметры и полез в MSDN (а куда же еще). И что я там вижу
Может я и стал с годами тупее, но сразу осознать, что и как происходит, к своему сожалению, я не смог. После того, как я все-таки разобрался, я стал укладывать все в понятное русло для того, чтобы использовать технику передачи параметров в дальнейшем. И тут я понял еще более неприятное - я не могу это делать просто и понятно для себя. После некоторых раздумий и проб я пошел по пути, который напоминает работу с тредами в JAVA - наследование класса Thread. Но т.к. наследовать в NET от Thread нельзя пришлось писать класс-обертку, после которой я все-таки смог увидеть, как мне быстро делать треды и использовать параметры. Идея очень простая и иллюстрируется кодом:
Данный пример в принципе должен давать исчерпывающие ответ. Видно, что теперь мы можем передавать любое количество параметров понятным способом. Во всяком случае мне гораздо проще использовать такой подход, нежели который предлагает Microsoft. Я не гарантирую, что кто-то такое уже не придумал, но пусть эта информация не пропадет. |
||||
|
|||||
pa6kevi4 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 15.9.2009 Репутация: нет Всего: нет |
А что делать, если ваш метод MyHandle() с параметрами?
Допустим, public void MyHandle(string message, MessageType messageType) Как тогда запустить поток? |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
что-то вы усложняете
если не нужно возвращаемое значение, нет необходимости дожидаться окончания, то прекрасно подойдёт Action функциональность обоих примеров (+ произвольное количество параметров, + возможность использовать замыкания) повторяет такой код
пс. откуда у темы 1782 просмотров? ![]() ппс. посмотрел на дату ![]() Это сообщение отредактировал(а) mihryak - 24.6.2010, 12:22 |
|||
|
||||
VirusUZ |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 9.4.2010 Где: Узбекистан, Навои й обл. Репутация: -1 Всего: -2 |
private void button1_Click(object sender, EventArgs e)
{ System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(salom)); } void salom(object virus) { MessageBox.Show("rahim"); } --------------------
Virus |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [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. |