Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
TRY...Catch problem
Message
De
01/10/2014 17:13:54
 
 
À
01/10/2014 16:51:10
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Versions des environnements
Visual FoxPro:
VFP 9 SP2
OS:
Windows 7
Network:
Windows 2008 Server
Database:
Visual FoxPro
Application:
Desktop
Divers
Thread ID:
01608628
Message ID:
01608634
Vues:
41
>>>Hi All:
>>>
>>>I am running 2 instances of VFP to simulate a file sharing problem. When instance 1 says:
>>>
>>>
>>>USE foo EXCL
>>>
>>>
>>>This works in instance 2:
>>>
>>>
>>>	TRY
>>>		USE foo SHARED
>>>	CATCH TO ww
>>>		MESSAGEBOX('Problem!  You got error # ' + ALLTRIM(STR(ww.errorno)))
>>>	ENDTRY
>>>
>>>
>>>HOWEVER when instance 1 says:
>>>
>>>
>>>USE foo
>>>flock()
>>>
>>>
>>>the 2nd instance just hangs with the following message in the status bar:
>>>
>>>
>>>Attempting to lock... Press <esc> to cancel
>>>
>>>
>>>How can I handle that situation gracefully with TRY..CATCH? I need this since the other system seems to be doing something like flock() and there's no way I can get the user to change the program.
>>>
>>>Thanks,
>>>
>>>Yossi
>>
>>You can use SET REPROCESS TO ... SECONDS to define how long you want to try to lock. And then check what value returned from flock() to see if it was successful or not. But the error won't be triggered.
>>HTH.
>
>I'm not doing the flock(). It's the other guy. I'm just trying to USE the table SHARED. When the other guy has issued an flock(), I'm hanging with that Trying to lock... message.
>
>What kind of lock am I trying to do when I USE SHARED?

VFP9 by default does some extra table integrity checking when you open a table. This extra checking requires a temporary lock placed on the table header. Since someone else has the entire table FLOCK()ed, you can't get a lock on the header.

The solution is SET TABLEVALIDATE TO 0.
Regards. Al

"Violence is the last refuge of the incompetent." -- Isaac Asimov
"Never let your sense of morals prevent you from doing what is right." -- Isaac Asimov

Neither a despot, nor a doormat, be

Every app wants to be a database app when it grows up
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform