C # версия Java Runnable? (Делегировать?) - PullRequest
2 голосов
/ 16 августа 2011

Я так и не смог найти прямой ответ на этот вопрос в SO. Есть ли предопределенный делегат с void (void) подписью?

Ответы [ 3 ]

4 голосов
/ 16 августа 2011

Действие имеет подпись, которую вы ищете. Однако это не означает то же самое, что и Runnable: Runnable обычно указывает, что метод run () предназначен для запуска в потоке, а Action не указывает. Для этого вам понадобится ThreadStart , который имеет такую ​​же подпись и делает это указание.

Если вам нужен только делегат без параметров, Action - это то, что вам нужно. Если вы имеете дело с потоками и вам нужно указать метод запуска, используйте ThreadStart.

1 голос
/ 16 августа 2011

Делегат Action является недействительным без параметров.

http://msdn.microsoft.com/en-us/library/system.action.aspx

Существуют также другие подписи с максимум 16 параметрами.

1 голос
/ 16 августа 2011

Неа.C # обрабатывает потоки иначе, чем в Java.В Java интерфейс Runnable является альтернативой подклассу Thread, но вам все равно нужно создать новый объект Thread, передав Runnable конструктору.

Вместо того чтобы создавать подклассы класса Thread, вы просто создаете новый объект System.Threading.Thread и передаете ему делегат ThreadStart (это функция, в которой вы выполняете работу).ThreadStart - это точный эквивалент C # для Java Runnable.

Однако делегат Action имеет параметры void, о которых вы говорите.

...