Попытка обернуть голову вокруг обновления элементов управления пользовательского интерфейса из других потоков.
В настоящее время использование BeginInvoke и честно работает нормально, но я продолжаю слышать о том, как вы можете использовать SynchronizationContext, чтобы сделать то же самое.
Что является предпочтительным?
Также является ли неправильной практикой обновление пользовательского интерфейса из потока? Было бы лучше поднять событие и иметь основную форму обработать его вместо или есть другие предпочтительные способы сделать это также?
Извините за несколько субъективный вопрос, но есть так много вариантов в мире многопоточности, и я пытаюсь понять их различия и где каждый из них применим, наряду с передовыми практиками по написанию читаемого и расширяемого кода для будущего.
Изменить: Теперь я также вижу маршрут TaskScheduler.StartCurrentSynchronizationContext
.. Так много вариантов x_x
Некоторые изображения хранятся в базе данных как base64 последовательностей и должны быть возвращены с контроллера MVC. Как это сделать без утечки памяти?
Ранее я использовал это:
return File(Convert.FromBase64String(pictureString), "image/jpeg");
Однако процесс w3wp начинает использовать целый ворох памяти для нескольких фотографий.
Есть ли правильный способ сделать это? В настоящее время я решил просто установить каждый образ на data:image/jpg;base64,string_here и он использует гораздо меньше памяти.. но это, кажется, намного медленнее загрузка страницы тоже.
Любая помощь ценится.