|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
|||||||||||
.NET 4.x Работа файлового менеджера и связанное с ним09.04.2021, 18:58. Показов 7315. Ответов 66
Метки нет (Все метки)
Тема создана в результате критики архитектуры приложения в теме Модальное Окно для выбора операции с файлами без зависаний при выполнении цикла.
И так. Я начал с нуля программу. Её основой файловый менеджер служит. И очень много вопросов. Во 1 файловый менеджер должен много каких операций выполнять. Во 2 ему также нужны доступ к данным параметров игры так сказать. Предыдущий код:
Но мне он сам не нравится особо так как взаимодействие с таким классом довольно таки тяжелая. И так. Сама реализация методов останется не изменным так как они исполняют именно то что нужно. Но надо сделать так чтобы взаимодействия с файловым менеджером была легкой. И от сюда проблемы у этого. Во 1 операции может выполнятся сразу несколько и паралельно. Основной операцией служит распаковка сохранений. Другое дело что в этот момент может также выполнятся и запуск игры (Который блин ну очень долгий и разделен на 2 этапа (1 - Игра запускается. 2 - Игра запущена)) и запуск редактора (который имеет этап редактор запущен) Основная проблема это отображение информации. Здесь я использую 1 класс и (наверное все же это ошибка) Вот приоритет отображение информации: 1. Распаковка сохранений 2. Запуск игры или игра запущена 3. Информация о запущенных других процессов. И от сюда вытекает то что у окна для этого всего 3 элемента. 1 Это отображения процента распаковки или загаловка о том что игра запускается или запущена. 2 Это полоска которая в 1 случае отображает процент распаковки в виде полоски а в остальных случаях используется просто как бегущий ползунок 3. Это текстовое поле но уже конкретно под распаковку. И также Файловому менеджору нужны данные (Параметры) игры которые конечно хранятся в отдельном классе settings и вот тут тоже не понятно. Их конечно можно передать в методы но с другой стороны хотелось бы сами данные сделать глобальными чтобы сами методы смогли получить доступ к данным. Данные конечно нельзя хранить в файловом менеджере так как они использоваться будут не только там. Добавлено через 9 минут И так. Есть вариант разделить операции под отдельные классы тоесть запуск игры отдельный класс. Запуск редакторов отдельный. Распаковка отдельный и запуск файлов тоже отдельный и создавать отдельные объекты для каждой операции соотвественно описать события которые повторятся будут в интерфейсе но с другой стороны это весьма затратно по памяти к томуже это все равно не решает приоритетов выполнения отображения информации о выполнении операций. Сами операции должны выполнятся паралельно это важно. Добавлено через 18 минут И более подробно о каких данных идет речь:
И список с сохранениями уже нужно создавать после того как данные загружены. Так как я говорил что данные эти и сам список должен быть глобальными то хранить объект с этими данными в cs окна отметаем. Но с друго йстороны где это вообще хранить. И вообще производить загрузка данных и запрос на данные если они отсуствуют.
0
|
|||||||||||
| 09.04.2021, 18:58 | |
|
Ответы с готовыми решениями:
66
Шаблон файлового менеджера Разработка файлового менеджера Реализация файлового менеджера |
|
Модератор
|
|||||
| 11.04.2021, 21:32 | |||||
|
WPF в некоторых деталях для Win7 имеет существенные отличия. Некоторые решения требует принципиально разной реализации для Win7 и Win8.1+. Добавлено через 45 секунд Я поэтому и писал, что отладки надо будет (чуть позже) добавить консольный проект. Добавлено через 15 секунд Добавлено через 36 секунд Я с Гитом только из Студии работаю. Добавлено через 2 минуты 4.8 тоже можно установить.
0
|
|||||
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
||||
| 11.04.2021, 22:19 [ТС] | ||||
|
0
|
||||
|
Модератор
|
|||
| 11.04.2021, 22:30 | |||
|
Удалять его е надо будет. В WPF проекте не будет ссылки на него и он не попадёт в WPF сборку. Добавлено через 36 секунд
0
|
|||
| 12.04.2021, 03:38 | |
|
0
|
|
|
14815 / 9589 / 1368
Регистрация: 21.01.2016
Сообщений: 36,114
|
|
| 12.04.2021, 05:51 | |
|
0
|
|
|
Модератор
|
||||
| 12.04.2021, 09:20 | ||||
|
Если же нет, то и разницы никакой не будет. Так что смысла, в данном случае, акцентироваться на Core не вижу. Добавлено через 5 минут Alexandr_7, MainDataGame - это под что заготовка? Добавлено через 14 минут 4.8 тоже можно установить. 1) Запускаем игру. Что метод получает в параметрах и возвращает? 2) Как ждём? Тормозим поток метода запуска или асинхронно по запуску игры создаём событие? Как именно определяется запуск игры - оставляем на ваше усмотрение. В это влазить я не буду. 3) "Говорим" - значит событие точно нужно. Что должно быть в параметрах события? 4) Опять "ждём" - синхронно, асинхронно? 5) Что за пауза, её длительность? Пауза синхронная, асинхронная? 6) Проверка - на ваше усмотрение. Если проверка положительная - создаём событие. А если отрицательная? 7) Одновременно может запускаться только одна игра? То есть если начат процесс запуска, то пока не будет остановки, метод запуска должен быть заблокирован? Если да, то здесь требуется команда. P.S. Можете сослаться в ответах уже реализованные методы в вашем предыдущем варианте.
0
|
||||
| 12.04.2021, 10:09 | |
|
0
|
|
| 12.04.2021, 10:18 | |
|
Не по теме: Wolfdp, при первой же встрече)
0
|
|
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
|||||||||||||||
| 12.04.2021, 14:47 [ТС] | |||||||||||||||
|
1. Это когда запущен лаунчер. (Возвращает строку о том что Лаунчер запущен) 2. Возвращает строку о том что ожидает запуск игры. 3. Возвращает строку что игра запущена (Если конеечсно пользователь ее всеже запустил так как открытие лаунчера не гарантирует что игра будет запущена) 4. Возвращает факт того что поток окончил свою работу.
Но вообще для начала нужно бы тогда разобраться с получением данных игры. Так как файлавому менеджеру нужны данные. Файловому менеджуру нужно знать 2 параметра. Методу важно знать несколько вещей полное имя файла запускаем игры и проверку является ли игра Стим версией. Всеже запуск стим версии и обычной сильно различаются. Хотя в целом похожи. Так как будь то обычная игра в любом случае запускается 1 Лаунчер игры. Добавлено через 55 секунд
0
|
|||||||||||||||
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
||
| 14.04.2021, 08:05 [ТС] | ||
|
Думаю на 3 библиотеки прийдется делить. 1. DATAGameLibrary - Отвечает за получения и хранения данных игры (Ну это файл игры, файлы сохранений и прочие) 2. FileManagerGameLibrary - Отвечает за работу с файлами игры 3. MessageServiceLibrary - Обертка над MessageBox + свои диалоговые окна.
0
|
||
|
Модератор
|
|||
| 14.04.2021, 21:26 | |||
|
Как это всё хранится? В какие типы всё это надо парсить? Добавлено через 1 минуту И он должен быть в отельной от них сборке. Добавлено через 2 минуты Alexandr_7, я извиняюсь за поздние ответы - просто навалилась своя груда неразобранных дел. На что-то простое могу с ходу с телефона отвечать. Но ваша тема требует серьёзного отношения и вникания.
0
|
|||
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
|||||||||
| 15.04.2021, 01:04 [ТС] | |||||||||
2 списка. 1 со всеми файлами. Второй с выбранными (кокрас через диалоговое окно)
0
|
|||||||||
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
|||||||
| 16.04.2021, 16:49 [ТС] | |||||||
|
Вот:
0
|
|||||||
|
|
|||
| 17.04.2021, 02:12 | |||
и я вроде уже писал что глушить ошибки в конструкторе не самая лучшая практика. Ваш класс не должен знать где он будет вызыватся.
0
|
|||
|
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
|
|||
| 17.04.2021, 21:37 [ТС] | |||
|
Так. Я в ступор пришел. Я вообще не понимаю как тогда сделать через MVP И так: Нужно загрузить данные из json (но если файл отсуствет нужно их задать (Если ни загрузить и ни задать не получилось то нужно закрыть программу а значит библиотека должна возвращать истину или ложь. А вот тут реально проблема так как конструкторы не умеют возвращать значение. Можно обойти возвращая значение в параметр конструктора или через событие но я не знаю как еще можно вернуть значение через конструктор класса. А создавть отдельный метод который прийдется отдельно вызывать не в библиотеки я не хочу. Это неправильно)) Но да. То что из библиотеки нужно убирать Environment.Exit(0); это факт. Добавлено через 4 минуты Вообще через событие было бы наверное отличным вариантом так как в событие тогда можно будет выдовать любые ошибки и уже окно их будет отображать. Другой вопрос как передать метод для событие MainDataGame Через параметр конструктора в идеале но я не совсем в курсе как это оформить.
0
|
|||
|
|
||||||
| 18.04.2021, 08:13 | ||||||
|
Сделайте хотя бы так...
Добавлено через 2 минуты Ну и да, я думаю Элд Хасп сможет более "адекватно" раписать как нужно биндить менеджер к форме, но лично мое мнение: если не знаете MVVM на уровне мастера, можно спокойно работать по старинке через event, проект не выглядить мегасложным для этого.
0
|
||||||
|
Модератор
|
|||||
| 19.04.2021, 17:42 | |||||
|
MessageBox - диалоговое окно и находится в библиотеке. Почему бы не сделать своё кастомное аналогичное? Возьмите для примера MessageBox. Вы обращаетесь к его СТАТИЧЕСКОМУ методу, который возвращает РЕЗУЛЬТАТ ДИАЛОГА. Так же и вам следует поступить. Конструкторы экземпляров надо инкапсулировать. Добавить статический метод получающий в параметрах нужные значения: имя и расположение файла, ссылки на сервисы, контейнер для возврата полученных данных и др. А возвращает метод результат выполнения диалога: успешно, ошибка и др. Добавлено через 2 минуты Диалог этот будет вызываться в App.Startup и по его результату App будет принимать решение о продолжение работы или завершении с ошибкой. Добавлено через 2 минуты Это же простейший шаблон. Какие здесь ещё есть уровни? Он даже проще в реализации чем MVC и MVP.
0
|
|||||
|
|
|||
| 19.04.2021, 19:51 | |||
|
0
|
|||
| 19.04.2021, 19:51 | |
|
Исходник файлового менеджера Оформление для файлового менеджера Основные функции файлового менеджера
Смена файлового менеджера по умолчанию Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|