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 параметрами.