Обработчик событий против использования делегата - PullRequest
2 голосов
/ 15 декабря 2011

У меня есть синглтон, который я разделяю среди множества разных тем. Иногда один поток должен общаться с другим.

Я думал о двух подходах:

Каждый поток помещает делегата в синглтон. Когда требуется время, один поток вызывает функцию в синглтоне, которая вызывает другой делегат в синглтоне, который уведомляет каждый поток о необходимости что-то сделать.

Другая опция использует стандартный механизм обработки событий.

Есть ли польза от использования одного или другого?

Ответы [ 2 ]

4 голосов
/ 15 декабря 2011

Независимо от того, какой поток зарегистрировал делегата в синглтоне (или добавил событие в синглтон, это не имеет значения), уведомление произойдет в контексте уведомляющего потока .

Если вам нужно, чтобы один поток выполнял действия в соответствии с указаниями другого потока, вам необходимо сообщить об этом намерении с помощью данных.Например, каждый поток может установить блокирующую очередь и ждать, пока элементы будут помещены в их очередь другими.Этими элементами могут быть делегаты, объекты или чистые элементы данных, которые необходимо интерпретировать перед выполнением действия.Важно то, что для того, чтобы действие произошло в потоке, сам поток должен выполнить это действие.

3 голосов
/ 15 декабря 2011

Стандартная система событий будет работать лучше для вас, если это то, что вы хотите (и, похоже, так и есть), почему вы хотите заново изобрести колесо?

Я бы подумал, что стандартные события будут более знакомы людям, которые смотрят на код, и я думаю, что он будет более производительным. Это проблема? Вы пробовали это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...