Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 23.02.2017, 23:35   #1
OmegaBerkut
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 814
Репутация: 111
По умолчанию System.IO.File.Copy() компьютер вешается наглухо

Здравствуйте. Сегодня столкнулся с одной очень не хорошей проблемой ...
Когда указанная функция копирует файл большого размера - компьютер вешается наглухо, даже мышкой невозможно подвигать. Хотя загрузка процессора в норме. Чтение/запись происходят НЕ на системном разделе.
У меня не было таких проблем при побайтовой обработке файлов больших размеров.
Что с функцией Copy ? Какие есть адекватные аналоги ?
На счёт второго вопроса - мне наверное придется через FileStream всё прогонять, ибо это уже серьёзный вопрос.

Последний раз редактировалось OmegaBerkut; 23.02.2017 в 23:59.
OmegaBerkut вне форума   Ответить с цитированием
Старый 24.02.2017, 00:26   #2
New man
Участник клуба
 
Регистрация: 24.01.2011
Сообщений: 685
Репутация: 241
По умолчанию

Хм, а у вас много оперативы? Похоже на то, что вы копируете файл на том же физическом диске, что и файл подкачки, поэтому скорость обращения системы к "виртуальной" памяти падает, в итоге приложения просто ждут, пока система загрузит значения из памяти в регистры. Ну, и система висит.

Лечится это отключением файла подкачки.
__________________
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума   Ответить с цитированием
Старый 24.02.2017, 02:35   #3
OmegaBerkut
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 814
Репутация: 111
По умолчанию

New man, оперативы у меня 8 гб. На счёт файла подкачки - не в курсе, туда лазить ещё не приходилось.
Чтение происходит с одного физического диска, запись - на другой диск НЕ на системный раздел.

Последний раз редактировалось OmegaBerkut; 24.02.2017 в 02:37.
OmegaBerkut вне форума   Ответить с цитированием
Старый 24.02.2017, 09:46   #4
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 21,006
Репутация: 3402

icq: 446843180
skype: phoenix_proger
По умолчанию

ну создайте два потока и затем
Код:

source.CopyTo(target)

__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 24.02.2017, 16:54   #5
New man
Участник клуба
 
Регистрация: 24.01.2011
Сообщений: 685
Репутация: 241
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
ну создайте два потока и затем
Как я понял, у ТС зависает вся система, комп, то есть. Значит распараллелирование не особо поможет.


Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
на другой диск НЕ на системный раздел.
И файл подкачки находится на одном из этих двух физических дисков, верно? Попробуйте отключить его, у винды тупая привычка кучу всего, что должно быть в оперативе, записывать в файл подкачки.
8 Гб с лихвой хватит, если, конечно, вы там не разрабатываете на продуктах JetBrains и чем-нибудь подобном.
__________________
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума   Ответить с цитированием
Старый 24.02.2017, 17:56   #6
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 21,006
Репутация: 3402

icq: 446843180
skype: phoenix_proger
По умолчанию

Цитата:
Сообщение от New man Посмотреть сообщение
Как я понял, у ТС зависает вся система, комп, то есть. Значит распараллелирование не особо поможет.
Stream, а не Thread.
давно у Thread есть метод CopyTo?
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 24.02.2017, 18:07   #7
New man
Участник клуба
 
Регистрация: 24.01.2011
Сообщений: 685
Репутация: 241
По умолчанию

А, просто неудачность этих терминов (нитей и потоков) запутала.

А чем стримы лучше, чем копирование через IO?
__________________
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума   Ответить с цитированием
Старый 24.02.2017, 19:17   #8
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 21,006
Репутация: 3402

icq: 446843180
skype: phoenix_proger
По умолчанию

ручной контроль разве что.(в том числе размер буфера)
ибо File.Copy уходит внутрь WinAPI:CopyFile.
вообще такие функции обычно виснут если есть проблемы с диском.
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 24.02.2017, 19:26   #9
OmegaBerkut
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 814
Репутация: 111
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вообще такие функции обычно виснут если есть проблемы с диском
Проблем с диском не обнаружил. Хотя изначально беспокоило то, что судя по звуку винт иногда начинает постоянно парковать головки; но это быстро решается перезапуском компьютера.
Цитата:
Сообщение от New man Посмотреть сообщение
И файл подкачки находится на одном из этих двух физических дисков, верно?
Файл подкачки находится на системном разделе того диска, куда происходит запись.
Цитата:
Сообщение от New man Посмотреть сообщение
Попробуйте отключить его
А что я скажу, когда буду сдавать проект ?
OmegaBerkut вне форума   Ответить с цитированием
Старый 24.02.2017, 19:37   #10
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,181
Репутация: 3199

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
А что я скажу, когда буду сдавать проект ?
Дык если бы такая проблема была у всех пользователей этой функции, то это было бы общеизвестно, и ей бы никто не пользовался )
Alex11223 на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Error 1 Unable to copy file "obj\Debug\WindowsFormsApplicat ion2 .exe Dr.House69 C# (си шарп) 1 07.05.2014 16:50
RewriteRule webroot to file-system path paska27 PHP 2 14.12.2013 18:05
File System Watcher (TfisFileNotification) maxefficiently Помощь студентам 8 15.02.2011 01:28
класс ввода\вывода System::IO::File Selebro Общие вопросы C/C++ 1 18.10.2008 22:48
Copy File Witaliy Общие вопросы Delphi 4 26.07.2008 13:20


12:40.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru