IAdapterFactory для дорогих адаптивных? - PullRequest
1 голос
/ 27 февраля 2010

В нашем приложении RCP у нас есть представления, которым требуется C, и используем IAdapterFactory, чтобы добраться от A и B. Проблема в том, что, хотя A->C работает быстро, B->C намного медленнее (например, поиск в базе данных или файловой системе) и должно выполняться в задании пользовательского интерфейса.

Мы подумали об использовании CProxy или LightweightC и запросе у прокси или службы действительного C в задании пользовательского интерфейса, но это решение похоже на то, что оно нарушает целевое назначение адаптеров, так как представления потребуются знать, что они не могут напрямую получить доступ к C через фабрику адаптеров.

Есть ли лучшая практика в этом случае, или я вынужден заставить свои взгляды понять, что иногда необходимо более дорогое обращение?

1 Ответ

1 голос
/ 03 марта 2010

Я бы не использовал адаптеры для дорогостоящих операций. В этом сценарии я передаю A или B представлению, которое должно визуализировать адаптированный объект (например, с помощью SelectionService), и визуализировать выполняющуюся операцию в целевом представлении, часто с монитором прогресса в верхнем правом углу представления, которое будет визуализировать C запланируйте операцию адаптации (как не-пользовательское задание) и визуализируйте C. Преимущество состоит в том, что ваш пользовательский интерфейс не заблокирован, вы также можете вызывать ваши адаптеры в этом задании (через Platform.getAdapterManager (). getAdapter (...)) и это самый прозрачный способ для пользователя ИМХО.

...