Каковы отличия между Finalize и Dispose?
Dispose предоставляет явный контроль над ресурсами, которые использует объект, в то время как Finalize работает неявно и управляется сборщиком мусора.
Библиотека задач по C#
Dispose предоставляет явный контроль над ресурсами, которые использует объект, в то время как Finalize работает неявно и управляется сборщиком мусора.
Библиотека задач по C#
👍2
Зачем помечать override как sealed?
👾 — Чтобы запретить вызов из другого домена
👍 — Чтобы запретить дальнейшее переопределение и дать JIT шанс де-виртуализировать/инлайнить метод
🥰 — Чтобы сделать метод static
⚡️ — Это обязательно для всех virtual в Release
Библиотека задач по C#
👾 — Чтобы запретить вызов из другого домена
👍 — Чтобы запретить дальнейшее переопределение и дать JIT шанс де-виртуализировать/инлайнить метод
🥰 — Чтобы сделать метод static
⚡️ — Это обязательно для всех virtual в Release
Библиотека задач по C#
👍22
Почему Task.Result/.Wait() могут «вешать» UI/ASP.NET classic?
👾 — Потому что Task требует STA-поток
👍 — Из-за захвата SynchronizationContext: продолжение ждёт UI-поток, который блокирует синхронное ожидание
🥰 — Потому что GC останавливает мир на ожидании
⚡️ — Потому что Result всегда делает бесконечный spinwait
Библиотека задач по C#
👾 — Потому что Task требует STA-поток
👍 — Из-за захвата SynchronizationContext: продолжение ждёт UI-поток, который блокирует синхронное ожидание
🥰 — Потому что GC останавливает мир на ожидании
⚡️ — Потому что Result всегда делает бесконечный spinwait
Библиотека задач по C#
👍15