Делегати широко застосовуються в бібліотеці .NET як самостійно, так і для підтримки механізму подій.
Делегат є особливим видом класу, що нагадує собою інтерфейс, але, на відміну від нього, задає тільки одну сигнатуру методу. У мові C ++ аналогом делегата є вказівка на функцію, але вона не володіє безпекою і зручністю використання делегата. Завдяки делегатам стає можливою гнучка організація взаємодії, що дозволяє підтримувати узгоджений стан взаємозв'язаних об'єктів.
Основною метою створення багатопотокових застосувань є підвищення загальної продуктивності програми. Проте розробка багатопотокових застосувань складніша, оскільки при цьому виникають проблеми синхронізації даних, пов'язаних з можливістю доступу до одних і тих же даних з боку декількох потоків.