Смотрите на memcached. Это действительно прохладно, быстро и легкая система распределенного кэширования. Существуют API для нескольких из самых популярных языков, включая C#. Это не может служить хорошо на стороне клиента (если, конечно, клиент не получает кэшированные данные из сервера некоторого вида), но если Вы абстрагируете свое использование memcached к определенному интерфейсу, Вы могли бы тогда реализовать интерфейс с другой системой кэширования.
Что ж, вместо передачи Application.Current.MainWindow
просто передайте ссылку на любое нужное вам окно: new WindowInteropHelper (this) .Handle
и т. Д.
Просто используйте свое окно с классом WindowsInteropHelper:
// ... Window myWindow = get your Window instance...
IntPtr windowHandle = new WindowInteropHelper(myWindow).Handle;
Прямо сейчас вы запрашиваете главное окно приложения, которое всегда будет. Вы можете использовать тот же метод для любого окна, однако, при условии, что это класс Window, производный от System.Windows.Window.
Если вам по какой-то причине нужны дескрипторы окон для ВСЕХ окон Window
вашего приложения, вы можете использовать свойство Application.Windows
, чтобы вообще Windows, а затем используйте WindowInteropHandler
, чтобы получить доступ к их дескрипторам, как вы уже продемонстрировали.