我有一个在网络上运行的桌面应用程序,每个实例都连接到同一个数据库。
那么,在这种情况下,如何实现一个可在所有连接到同一数据库的正在运行的实例中工作的互斥锁?
换句话说,我不希望这两个以上的实例同时运行相同的功能。如果一个已经在运行该函数,则其他实例不应访问它。
PS:数据库事务不会解决,因为我不想互斥的功能不使用数据库。我提到数据库只是因为它可以用来在运行的实例之间交换信息。
PS2:该功能大约需要 30 分钟才能完成,所以如果第二个实例尝试运行相同的功能,我想显示一条很好的消息,它现在无法执行,因为计算机“X”已经在运行该功能.
PS3:该函数必须在客户端机器上处理,所以我不能使用存储过程。