Member 11903597 Ответов: 2

Используется другим процессом


я использую vb.net
мое приложение имеет два экрана первый главный экран и второй экран клиента
мне нужно показать данные доступа с первого экрана на второй, поэтому для этого я использовал file.copy, чтобы скопировать базу данных в общий сетевой файл в windows, и file.copy снова, чтобы получить ее обратно на другом.
проблема в том, что на главном экране (приложении) написано ("файл используется другим процессом)

что мне нужно, так это просто код, чтобы проверить, используется ли файл другим процессом или нет
чтобы заставить программу копировать файлы, когда она не используется другим процессом", который является моим вторым экраном"


я много искал но ничего не нашел

Что я уже пробовал:

file.copy(источник,путь,true)
-------------------------------

Dave Kreskowiak

Позволь мне все прояснить. Вы копируете файл базы данных Access, чтобы показать данные во второй форме? ... и эти две формы находятся в одном проекте?

RickZeeland

Он, вероятно, имеет в виду клиент-серверное приложение с основным серверным приложением и клиентом, который клиент может использовать.

Dave Kreskowiak

Я стараюсь ничего не предполагать, и его сообщение начинается с "моего заявления", без "s" в конце.

RickZeeland

Посмотрим, прольет ли оп какой-то свет на это, но было бы очень странно, если бы он использовал только одно приложение на одном ПК !

Dave Kreskowiak

Сомневаюсь, что мы это увидим. У ОП нет истории ответов на вопросы.

2 Ответов

Рейтинг:
5

RickZeeland

Вы можете использовать Try ... Catch чтобы проверить, используется ли файл, см. пример здесь: winforms - VB.NET проверка того, открыт ли файл, прежде чем приступить к чтению/записи? - переполнение стека[^]

Другая идея может заключаться в том, чтобы экспортировать данные клиента в CSV и позволить серверному приложению импортировать их, см. пример здесь: Быстрый импорт csv - файла в базу данных access через VB.net 2010 - переполнение стека[^]
Таким образом, вы можете избежать проблем с блокировкой файлов.


Member 11903597

ты потрясающая спасибо

Рейтинг:
1

RickZeeland

Сделайте копию файла в отдельном файле Задача, смотрите обзор здесь: Класс Задач (System.Нарезание резьбы.Задачи) | Microsoft Docs[^]
Вот простой пример: Пример управления задачами VB[^]
Важная часть заключается в следующем:

Dim Tasks(1) As Task
Tasks(0) = Task.Factory.StartNew(Sub() TimedMatrixMultiplyCPU(1299))
Tasks(1) = Task.Factory.StartNew(Sub() TimedMatrixMultiplyGPU(1301))

'' Block until all tasks complete
Task.WaitAll(Tasks)

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

Лучшим вариантом было бы использовать такую базу данных, как PostgreSQL или SQL Server, поскольку эти базы данных могут легко обрабатывать одновременный доступ и предназначены для сценариев клиент-сервер. https://www.slant.co/topics/5950/~реляционные базы данных[^]


Member 11903597

я не понял статью microsoft
:/
можете ли вы написать простой пример