Я реализовал пользовательское контекстное меню для CefSharp на основе этого примера со страницы CefSharp github, чтобы обойти проблему, что события запускаются в разных потоках, в результате чего контекстное меню не закрывалось при щелчке снаружи.
Я просто скопировал и вставил его из оригинального источника, просто добавил еще несколько случаев для команд, и вначале это работало.Однако команды выполняются только иногда (в большинстве случаев нет).
Я добавил Console.WriteLine()
в код, чтобы проверить, что происходит, и кажется, что выполнение команды иногда отменяется до того, как онаготово.
Я не уверен, является ли это ошибкой в CefSharp или CEF, или же реализация примера просто не завершена.Я попытался удалить обработчик menu.Closed
, просто в качестве эксперимента, но, похоже, это ничего не меняет.
Я искал в Интернете, но не смог найти ошибку, соответствующую описанию, поэтому я предполагаю, что это я.К сожалению, мне трудно обдумать это.Если бы кто-то мог указать мне правильное направление или указать на ошибку, это было бы неплохо.
Пока мой код в основном такой же, как в этом примере , но со всеми случаями длякоманды.
Я создал простое тестовое приложение, которое представляет собой не что иное, как окно с браузером, но проблема сохраняется, хотя это случается реже.Проект Visual Studio, который я создал для тестирования, можно загрузить здесь .
Если вы попытаетесь несколько раз скопировать вставку слова из контекстного меню, вы должны увидеть, что он работает только с70% времениЯ предполагаю, что это случается реже, чем в моем реальном приложении, потому что мое настоящее приложение является большим монстром по сравнению с тестовым приложением и поэтому медленнее.
Cef - версия 3.3396.1786
CefSharp.Wpf - версия 67.0.0
ОС: Win10 x64