[Lazarus] uniqueinstance

Martin mailinglists at collins-email.co.uk
Sat May 23 12:12:55 CEST 2015


Hi,

Just need a little advice on placement of code please, thanks in advance.

I wanted my app to have only one instance, so found uniqueinstance - 
http://wiki.lazarus.freepascal.org/UniqueInstance (it has the ability to 
pass the command line parameters from the second to the first instance 
which is something I want but haven't got round to testing yet!)

There's no problem with uniqueinstance, from reading the source I think 
that it's terminating the second instance before the onshow event of the 
main form so I'm guessing that the formcreate and formdestroy events of 
the main form from the second instance still occur and that's where I 
think my problem is.

I am using the formcreate event to parse the command line arguments to 
the constructor of my main class, which amongst other things unzips 
files to the /tmp directory. I then use the formdestroy to clean up, 
deleting the files in the /tmp directory.

If I start a second instance with the same command line parameters as 
the first, uniqueinstance terminates the second instance and no second 
form is seen on screen. However, all the files are deleted from /tmp 
(formdestroy) so they are no longer available to the first instance so 
it fails. (I know in a real life situation it would be unlikely that the 
second instance would be trying to open the same files as the first, but 
not impossible.)

So either I use some form of file locking or keep uniqueinstance and 
move my code. I just wanted some advice please, as to where people on 
the list would suggest I put the code to parse the command line 
parameters to the constructor of my main class and/or clean up code. I 
was looking at some of the application events in the myapp.lpr file but 
I am not sure if that is the right place? Any help gratefully received.

Thanks,

Martin Collins




More information about the Lazarus mailing list