| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Thread и передача параметров |
| Автор: AntonSaburov 18.3.2003, 23:07 | ||||
| Данная заметка не претендует на истину в последней инстанции - если кто-то нашел иное решение проблемы, милости прошу свои комментарии. Итак, как только я стал разбираться с тредами мне само собой захотелось передать параметры в функцию, которая в этом треде исполняется. Увидев стандартное использование тредов, я не нашел возможности передать параметры и полез в MSDN (а куда же еще). И что я там вижу
Может я и стал с годами тупее, но сразу осознать, что и как происходит, к своему сожалению, я не смог. После того, как я все-таки разобрался, я стал укладывать все в понятное русло для того, чтобы использовать технику передачи параметров в дальнейшем. И тут я понял еще более неприятное - я не могу это делать просто и понятно для себя. После некоторых раздумий и проб я пошел по пути, который напоминает работу с тредами в JAVA - наследование класса Thread. Но т.к. наследовать в NET от Thread нельзя пришлось писать класс-обертку, после которой я все-таки смог увидеть, как мне быстро делать треды и использовать параметры. Идея очень простая и иллюстрируется кодом:
Данный пример в принципе должен давать исчерпывающие ответ. Видно, что теперь мы можем передавать любое количество параметров понятным способом. Во всяком случае мне гораздо проще использовать такой подход, нежели который предлагает Microsoft. Я не гарантирую, что кто-то такое уже не придумал, но пусть эта информация не пропадет. |
| Автор: pa6kevi4 24.6.2010, 10:13 |
| А что делать, если ваш метод MyHandle() с параметрами? Допустим, public void MyHandle(string message, MessageType messageType) Как тогда запустить поток? |
| Автор: mihryak 24.6.2010, 12:15 | ||
| что-то вы усложняете если не нужно возвращаемое значение, нет необходимости дожидаться окончания, то прекрасно подойдёт Action функциональность обоих примеров (+ произвольное количество параметров, + возможность использовать замыкания) повторяет такой код
пс. откуда у темы 1782 просмотров? ппс. посмотрел на дату |
| Автор: VirusUZ 25.6.2010, 12:09 |
| private void button1_Click(object sender, EventArgs e) { System.Threading.ThreadPool.QueueUserWorkItem(new WaitCallback(salom)); } void salom(object virus) { MessageBox.Show("rahim"); } |