更新:2007 年 11 月
控制其他进程对使用 Open 函数打开的文件的全部或一部分的访问。
在文件 I/O 操作中,My 功能具有比 Lock 和 Unlock 更高的效率和更好的性能。有关更多信息,请参见 My.Computer.FileSystem 对象。
Public Overloads Sub Lock(ByVal FileNumber As Integer)
' -or-
Public Overloads Sub Unlock(ByVal FileNumber As Integer)
' -or-
Public Overloads Sub Lock(_
   ByVal FileNumber As Integer, _ 
   ByVal Record As Long _
)
' -or-
Public Overloads Sub Unlock( _
   ByVal FileNumber As Integer, _ 
   ByVal Record As Long _
)
' -or-
Public Overloads Sub Lock( _
   ByVal FileNumber As Integer, _ 
   ByVal FromRecord As Long, _ 
   ByVal ToRecord As Long _
)
' -or-
Public Overloads Sub Unlock( _
   ByVal FileNumber As Integer, _
   ByVal FromRecord As Long, _
   ByVal ToRecord As Long _
)
参数
- FileNumber 
 必需。任何有效文件号。
- Record 
 可选。唯一要锁定或取消锁定的记录号或字节数。
- FromRecord 
 可选。第一个要锁定或取消锁定的记录号或字节数。
- ToRecord 
 可选。最后一个要锁定或取消锁定的记录号或字节数。
异常
| 异常类型 | 错误号 | 条件 | 
|---|---|---|
| FileNumber 不存在。 | ||
| 文件模式无效。 | 
如果正在升级使用非结构化错误处理方式的 Visual Basic 6.0 应用程序,请参见“错误号”一列。(您可以根据 Number 属性(Err 对象) 比较错误号。) 然而,如果可能,应当考虑用 Visual Basic 的结构化异常处理概述 替换这种错误控制。
备注
Lock 和 Unlock 函数用在多个进程可能需要访问同一个文件的环境中。
Lock 和 Unlock 函数总是成对出现。Lock 和 Unlock 的参数必须完全一致。
如果未提供 Record 或 FromRecord 和 ToRecord,则将锁定整个文件。如果只指定 Record,则将锁定/取消锁定单个记录。
如果已经以顺序输入或输出模式打开文件,则无论 FromRecord 和ToRecord 指定的范围如何,Lock 和 Unlock 都会影响整个文件。
示例
本示例阐释 Lock 和 Unlock 函数的使用。本示例假定 People.txt 是包含 Person 结构记录的文件。
Structure Person
   Dim Name As String
   Dim ID As Integer
End Structure
Sub PutInLockedFile(ByVal index As Integer, ByVal onePerson As Person)
   Try
      FileOpen(1, "c:\people.txt", OpenMode.Binary)
      Lock(1)
      FilePut(index, onePerson)
      Unlock(1)
      FileClose(1)
   Catch
      ' Error recovery code here.
   End Try
End Sub
智能设备开发人员说明
不支持此函数。
要求
**模块:**FileSystem
**程序集:**Visual Basic 运行库(在 Microsoft.VisualBasic.dll 中)