C# версия Java Runnable? (Делегировать?)

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

3 ответа

Решение

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

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

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

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

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

Делегат Action является пустым без параметров.

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

Есть и другие подписи с 16 параметрами.

Другие вопросы по тегам