Следует ли использовать Invoke или SynchronizationContext для обновления элементов управления формы из другого потока?

Попытка обернуть голову вокруг обновления элементов управления пользовательского интерфейса из других потоков.

В настоящее время использование BeginInvoke и честно работает нормально, но я продолжаю слышать о том, как вы можете использовать SynchronizationContext, чтобы сделать то же самое.

Что является предпочтительным?

Также является ли неправильной практикой обновление пользовательского интерфейса из потока? Было бы лучше поднять событие и иметь основную форму обработать его вместо или есть другие предпочтительные способы сделать это также?

Извините за несколько субъективный вопрос, но есть так много вариантов в мире многопоточности, и я пытаюсь понять их различия и где каждый из них применим, наряду с передовыми практиками по написанию читаемого и расширяемого кода для будущего.

Изменить: Теперь я также вижу маршрут TaskScheduler.StartCurrentSynchronizationContext .. Так много вариантов x_x

-121--1872853- Возврат образа base64 без утечки памяти ASP.NET MVC 3 У меня есть некоторые образы, сохраненные в базе данных как base64 последовательностей и нужно вернуть их с контроллера MVC. Как я могу это сделать без утечки памяти? Ранее я использовал это: return File (Конвертировать....

Некоторые изображения хранятся в базе данных как base64 последовательностей и должны быть возвращены с контроллера MVC. Как это сделать без утечки памяти?

Ранее я использовал это:

return File(Convert.FromBase64String(pictureString), "image/jpeg");

Однако процесс w3wp начинает использовать целый ворох памяти для нескольких фотографий.

Есть ли правильный способ сделать это? В настоящее время я решил просто установить каждый образ на data:image/jpg;base64,string_here и он использует гораздо меньше памяти.. но это, кажется, намного медленнее загрузка страницы тоже.

Любая помощь ценится.

5
задан tereško 6 July 2012 в 19:44
поделиться