Поскольку вопрос был помечен как C #, этот ответ больше не применяется, но я хотел бы оставить его на тот случай, если в будущем он будет полезен для других.
Если вы используете Java,Вы можете использовать java.nio.channels.FileLock
.
Чтобы использовать его, сделайте что-то вроде этого:
import java.io.RandomAccessFile;
import java.nio.FileLock;
...
RandomAccessFile raf = new RandomAccessFile(file, "rw");
FileLock lock = raf.getChannel().tryLock(0L, Long.MAX_VALUE, false);
if (lock != null && lock.isValid()) {
// You've acquired the lock!
else {
// You did not acquire the lock
raf.close();
}
Примечание. Это защищает от доступа других процессов, но не других потоков.Для этого вам нужно будет использовать собственную внутреннюю синхронизацию (вероятно, будет работать блокировка на raf
).