[Gambas-user] Avoiding multiple instances
Rolf-Werner Eilert
eilert-sprachen at ...221...
Thu Jan 31 16:19:06 CET 2008
Leonardo Miliani schrieb:
> Jeffrey Cobb ha scritto:
>> I've made a small toolbar app to run in fluxbox. I've included the
>> binary in my xinitrc file. But I'd like to know how I can avoid
>> multiple instances of the same app running. How does a gambas program
>> detect another copy of itself running?
>>
>> Jeff
>>
>>
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by: Microsoft
>> Defy all challenges. Microsoft(R) Visual Studio 2008.
>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>> _______________________________________________
>> Gambas-user mailing list
>> Gambas-user at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/gambas-user
>>
>
> I can suggest you how I solved this problem.
> When an application of mine starts, it creates a file just by executing
> this code:
>
> PRIVATE FUNCTION Check_If_Running() AS Boolean
> DIM TempString AS String
> DIM hFile AS File
> TempString = Application.Path & "/.running"
> IF Exist(TempString) THEN
> Message.Warning("No multiple instances allowed")
> RETURN TRUE
> END IF
> hFile = OPEN TempString FOR CREATE
> CLOSE #hFile
> RETURN FALSE
> END
>
> The first time that the app starts it creates an empty hidden file and
> it returns FALSE because it didn't find another instance running.
> The second time that you call the function you'll get TRUE because the
> program is running (it created the check file).
> Just by checking its existance you can know if another instance of the
> program is running.
>
> Of course, when you close the app, you have to delete it:
>
> PUBLIC SUB Form_Close()
>
> IF Exist(Application.Path & "/.running") THEN
> KILL Application.Path & "/.running"
> END IF
>
> END
>
Indeed, that is the problem with this solution: if the app crashes, it
will prevent itself from being restarted until the user manually deletes
the hidden file. I didn't find a good way out of this yet :-)
Rolf
More information about the User
mailing list