Functions.Flock 方法 (__Usual) | |
锁定已打开并共享的数据库文件。
命名空间:
XSharp.RT
程序集:
XSharp.RT (在 XSharp.RT.dll 中) 版本:2.22 GA
语法 FUNCTION Flock(
uArea AS USUAL
) AS LOGIC
public static bool Flock(
__Usual uArea
)
查看代码参数
- uArea
- 类型:__Usual
指定要在其上执行操作的表的工作区名称或编号。
返回值
类型:
Boolean
如果锁定成功则返回 TRUE;否则返回 FALSE。
备注
如果数据库文件以共享模式打开,在尝试任何更新数据库文件的操作之前,必须获得文件锁。
对于每次调用 FLock(),都会尝试锁定数据库文件(以及其他相关文件,如索引和备忘录文件),并将结果作为逻辑值返回。
如果另一个进程当前持有相同数据库文件的文件锁或记录锁,则文件锁定失败。
如果 FLock() 成功,文件将被锁定,其他进程将被阻止进行更新,直到锁被释放。FLock() 提供共享锁,允许其他用户对锁定文件进行只读访问,而只允许当前进程修改它。
文件锁将一直有效,直到您关闭数据库、显式解锁(例如使用 DBUnLock()),或尝试另一个文件或记录锁(使用 RLock() 或 DBRLock())。
默认情况下,此函数在当前选定的工作区上操作。
可以通过在别名表达式中指定或调用接受工作区参数(工作区编号或别名)的重载来使其在未选定的工作区上操作。
这个特性很有用,因为 FLock() 不会自动尝试锁定相关文件。
示例
此示例使用 FLock() 对 INVENTORY.DBF 中的价格进行批量更新:
1USE inventory SHARED NEW
2IF Inventory->FLock()
3 REPLACE ALL Inventory->Price WITH ;
4 Inventory->Price * 1.1
5ELSE
6 QOut("文件不可用")
7ENDIF
此示例尝试在未选择的工作区中锁定文件:
1USE sales NEW
2USE customer NEW
3IF !Sales->FLock()
4 QOut("Sales 正在使用中")
5ENDIF
参见