Мы используем конфигурационные файлы в рамках различных проектов при управлении исходным кодом (TFS), где каждый разработчик должен внести некоторые корректировки в своей локальной копии для конфигурирования его среды. Процесс сборки заботится о замене файлов конфигурации с конфигурацией сервера как часть развертывания, таким образом, на самом деле не имеет значения, что находится в репозитории. Однако мы так или иначе хотели бы сохранить некоторую неразрывную версию по умолчанию файлов конфигурации в репозитории, так, чтобы, например, люди, не вовлеченные в конкретный проект, не сталкивался с проблемами из-за локальной неверной конфигурации.
Мы пытались разрешить это путем представления политики регистрации, которая просто запрещает регистрации файлы конфигурации. Это хорошо работает, но просто потому что мы ленивы, чтобы всегда снять флажок с теми флажками в незаконченном окне изменений, вопрос прибывает: действительно ли возможно прозрачно отключить регистрацию конкретных файлов, не не допуская их в управление исходным кодом (например, блокируя их текущую версию)?
Для поддержки сценариев, которые вы иллюстрируете в своем вопросе, достаточно одного DockPanel
, поэтому все, что вам нужно написать, это обработчики для OnDragEnter, OnDragOver, OnDragLeave и OnDragDrop. Я обычно использую один обработчик событий, потому что обработка этих четырех событий так похожа:
OnDragEnter & OnDragOver:
OnDragLeave:
OnDragDrop:
Естественно, вам также придется выполнять перетаскивание по заголовку
Двумя сложностями здесь являются:
Для простого алгоритма я бы оценил, что потребуется неделя, чтобы все морщины гладить. Если вам нужна действительно сложная структура данных и сама структура неочевидна, может потребоваться серьезное время, чтобы выяснить эту часть.
-121--3095691-Ближайший пример, который я знаю о том, что кто-либо делает что-либо удаленно, как вы спрашиваете, это проект Mongoose . В списке рассылки Mongoose растет количество дискуссий о постоянных соединениях для HTTP - но это, очевидно, не совсем веб-сокеты. Я бы надеялся, что кто-то тоже сможет добавить к нему Web Sockets.
-121--2501924-Основные параметры:
Есть несколько других способов, но я думаю, что это четкие фавориты.
Практически любая ошибка вызовет исключения. Единственные ошибки, о которых я могу думать, что это не сработает с параметром «пауза на исключениях», это синтаксические ошибки, которые происходят до того, как какой-либо из кодов будет выполнен, так что нет места для паузы в любом случае и ни один из кодов не будет запущен.
Очевидно, что Chrome не остановится на исключении, если он находится внутри блока try-catch. Он приостанавливается только на необдуманных исключениях. Я не знаю, путь это изменить.
Если нужно знать, в какой строке произошло исключение (тогда можно установить точку останова, если исключение воспроизводимо), объект Error
, заданный блоку catch, имеет свойство stack
, показывающее, где произошло исключение.
Также важно отметить, что уведомления являются односторонней улицей - они не могут отправлять информацию обратно, как могут делегаты. Единственный случай, когда требуется выполнить итерацию через список делегатов, это если делегирующий класс ожидает от своих делегатов обратную информацию.
-121--1221705-Также можно использовать политику возврата, блокирующую определенные имена файлов.
Я думаю, что это было бы менее предпочтительно, чем просто пометить файл как «Исключенный», хотя.