Martin wrote:
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.

I don't use UniqueInstance, but have put that sort of thing immediately after Application.Initialize terminating with halt if it finds it can pass params to an existing copy.

--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to