valechakamurmur, Я у вас уточнил про вариант использования, а вы сразу в штыки. )) Хотите ответ. Вот вам. Генерите в программе уникальный ID и открывайте в браузеру URL с этим ID. На сервере сохраните этот ID и время открытия сессии. Теперь вы можете из своей программы просто обратиться к серверу и уточнить, активна ли еще сессия с данным ID? При данном подходе не нужно знать ничего про браузер и т.п.
sddvxd, ", что для 64 битной платформы можно вставлять значения либо размером 2, либо размером 8 байт. " вообще то там сказано, что значением инструкции push может быть значение такого размера, а далее значение преобразуется в 64 бита и сохраняется. Операции с памятью идут в размере разрядности системы.
Ислам Дорткулиев, Что значит не меняется? Где он должен поменяться? Вы вернули новый куда-то, и там будут знать, что получили новый. А все другие клиенты знать об этом не могут. Они будут слать старый, а вы должны это обрабатывать
Ислам Дорткулиев, Для примера вы решили, что пользователи со старым токеном должны залогиниться снова. Вы получаете запрос с токеном, достаете его ID проверяете это ID на наличие в созданной вами таблице в БД. Если он там есть, то токен признается не валидным.
А в чем смысл такого подхода? UI не может работать из другого потока и по этой причине вам и приходится делать вызов Dispatcher.Invoke.
Что мешает скрыть основную форму, а форму логина показать через ShowDialog()?
semki096, Если у пользователя открыта страница, то вы можете это сделать, а если он просто накидал товар в корзину и закрыл браузер, то все что касается localstorage уже будет недоступно.
Тут явно проблема не только в потоках, но и в работе с БД. Для примера: если множество вставок данных поместить в одну транзакцию, то процес пойдет в разы шустрее. Также помогает отключение индексов.
Знаю несколько крупных проектов, где переводят на .net core. Но переводят проекты сразу на микросервисную архитектуру, то есть существенно их перерабатывая.