как лучше всего ожидать filelock для выпуска

Вы можете добавить прослушиватель событий в поле ввода в BotChat, чтобы отслеживать события keyup и использовать нажатия клавиш, как бы вам ни хотелось, прежде чем пользователь отправит сообщение. Смотрите пример кода ниже.

const input = document.getElementsByClassName('wc-shellinput')[0];

input.addEventListener('keyup', event => {
  if (event.key != 'Enter') {
    console.log('Key:', event.key);
    console.log('Value:', event.target.value);
  }
});

Надеюсь, это поможет.

9
задан Community 23 May 2017 в 12:04
поделиться

6 ответов

При открытии файла для чтения в.NET, это в какой-то момент попытается создать дескриптор файла с помощью API-функции CreateFile, которая устанавливает код ошибки, который может использоваться для наблюдения, почему это перестало работать:

const int ERROR_SHARING_VIOLATION = 32;
try
{
    using (var stream = new FileStream("test.dat", FileMode.Open, FileAccess.Read, FileShare.Read))
    {
    }
}
catch (IOException ex)
{
    if (Marshal.GetLastWin32Error() == ERROR_SHARING_VIOLATION)
    {
        Console.WriteLine("The process cannot access the file because it is being used by another process.");
    }
}
5
ответ дан 4 December 2019 в 21:51
поделиться

Существует полезное обсуждение групп Google, которые действительно необходимо считать. Одна из опций близко к darin's; однако, для гарантии Вы получаете право win32 ошибка, действительно необходимо назвать win32 OpenFile () API сами (иначе, Вы действительно не знаете, какую ошибку Вы получаете).

Другой должен проанализировать сообщение об ошибке: это перестанет работать, если Ваше приложение будет запущено на другой языковой версии.

Третья опция состоит в том, чтобы взломать в классе исключений с отражением для извлечения фактического HRESULT.

Ни одна из альтернатив не действительно настолько привлекательна: иерархия IOException извлекла бы выгоду еще из нескольких подклассов, по моему скромному мнению.

4
ответ дан 4 December 2019 в 21:51
поделиться

Для чтения данных, можно сделать:

с помощью (фс FileStream = новый FileStream (имя файла, FileMode. Открытый, FileAccess. Читайте, FileShare. ReadWrite | FileShare. Удалите)) {....}

и сохранить в файл:

с помощью (фс FileStream = новый FileStream (имя файла, FileMode. Добавьте, FileAccess. Запись, FileShare. Читайте | FileShare. Удалите)) {...}

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

0
ответ дан 4 December 2019 в 21:51
поделиться

Можно открыться, это (как описано bezieur) затем пытается заблокировать разделы (или целый файл): http://www.java2s.com/Code/VB/File-Directory/Lockandunlockafile.htm

0
ответ дан 4 December 2019 в 21:51
поделиться

Вы подразумеваете, что и читаете и пишете в файл? Или что внешнее приложение пишет в него.

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

http://msdn.microsoft.com/en-us/library/system.threading.readerwriterlock.aspx

Иначе все, что необходимо сделать, открыть файл в режиме только для чтения. Затем у Вас не должно быть проблем:

fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read));
0
ответ дан 4 December 2019 в 21:51
поделиться

Можно сравнить с типом IOException, чтобы проверить и видеть, не является ли это что-то еще

Такой как

if (ex is FileNotFoundException)

Вы могли бы хотеть искать справку в Системе. IO. Много исключений в том классе наследовалось IOException. За пределами проверки, чтобы видеть, является ли это другой тип исключения, Вам, вероятно, придется посмотреть в сообщении описания, или Вы могли бы изучить превращение вызова API Win32 в shell32.dll. Может быть функция там, чтобы проверить, заблокирован ли файл.

Кроме того, если абсолютно необходимо ожидать, можно использовать цикл, но если Вы хотите сделать другие действия при ожидании использования асинхронный поток.

0
ответ дан 4 December 2019 в 21:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: