Контекст не зависит от потока, то есть один и тот же.
Вот тут, как мне кажется, вся проблема.
Я бы сделал как-то так: при необходимости отрендерить новый кадр, создается таск, внутри которого создается контекст, и затем этот контекст прогоняется через все рендереры, каждый из которых дорисовывает нужный слой. Результат отдаётся GUI Dispatcher'у.