Вопрос: Нежелательная синхронизация сетевой папки во время записи программы в файл


Я пытаюсь написать программу, которая выполняет некоторые операции чтения / обработки / записи.

Хотя все хорошо работает, когда я даю моей программе локальный путь, я столкнулся с необычной проблемой: огромным использованием памяти при обработке файлов по локальной сети.

Если путь к файлу - это что-то вроде "//network_address/folder/*.ext«программа использует около 4G RAM (в отличие от 500 - 1G, когда путь - это что-то вроде"c:/folder/*.ext«)

Я использовал Process Monitor, чтобы увидеть, что происходит, и заметил последовательные ошибки чтения в "c:\windows\csc\v2.0.6\namespace«Папка», которой я даже не знал, существует. Изучив ее, я обнаружил, что она используется для синхронизации файлов с сетевым сервером, возможно, для просмотра сетевых файлов в автономном режиме.

Вышеупомянутые сбои происходили точно до начала процесса записи в файл (не до чтения), папка пространства имен не использовалась, я ничего не синхронизировал, и фактическая запись на сетевые диски была успешной.

Я не настроил какой-либо вариант синхронизации папок ... (и я не хочу)

Как только я взял на себя управление этой папкой, использование памяти снизилось (хотя у меня все еще появились ошибки чтения в Process Monitor).

Итак ... Я думаю, что моя проблема в том, что я пытаюсь сделать что-то, чего мне не разрешают, и использовать много памяти для хранения данных, пока я пытаюсь сделать то, что мне не разрешено, пока я не сработаю и, наконец, поставлю данные, где он принадлежит ...

Решение: избегайте делать то, что мне не разрешено делать, не так ли?

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

Как я могу запретить Windows синхронизировать файлы за моей спиной и просто записывать файлы непосредственно в сетевую папку?


4
2017-07-06 22:40


Источник


От чтения вашего вопроса я должен предположить, что вы неправильно интерпретируете свои наблюдения в Process Monitor. Если procmon показывает ошибки чтения в кеше CSC, это звучит как что-то, что я ожидаю, если автономные файлы будут отключены. В противном случае это не будет ошибкой чтения, это будет успех чтения. Поэтому я бы предположил, что проблема другая. Я думаю, что ваша проблема может быть связана с большим количеством программирования, поскольку решение лучше всего получить путем отладки и профилирования. Удачи :) - Der Hochstapler
@OliverSalzburg: Спасибо, я не смотрел на это таким образом - все еще, когда я взял собственность в папку, используемая память резко упала ... Поэтому я надеялся, что просто не воспользуюсь. - Thalia


Ответы:


Вы уже поняли это? Попробуйте отключить автономные файлы внутри общего ресурса:

  1. Щелкните правой кнопкой мыши ссылку
  2. Перейдите на вкладку «Общий доступ»
  3. Нажмите кнопку «Расширенный доступ»
  4. Нажмите кнопку Кэшировать
  5. Выберите «Нет файлов или программ из общей папки. не в сети."
  6. Нажмите «ОК», чтобы закрыть окно «Автономные настройки».
  7. Нажмите «ОК», чтобы закрыть всплывающее меню «Расширенный доступ».
  8. Нажмите «Закрыть», чтобы закрыть окно свойств вашего ресурса.

Еще одна вещь, которую вы можете попробовать с клиентского ПК, - отключить службу автономных файлов, если это Win7 / Vista.

Сообщите нам, как это работает.


1
2017-07-18 14:42



Сетевые ресурсы, к которым я пытаюсь получить доступ, не принадлежат мне, поэтому у меня нет доступа к настройкам совместного доступа. Они доступны всем в сети ... (в автономном режиме: недоступно). Тем не менее для меня это имело значение, когда я изменил настройки в папке кеша CSC - я до сих пор не понимаю, почему или не знаю, как вернуть изменение, чтобы я мог проверить свою гипотезу. - Thalia
какие конкретные изменения вы сделали? И как вы их сделали? - cwheeler33
Как я сказал в своем первоначальном посте, я взял на себя ответственность за эту папку. - Thalia