We help IT Professionals succeed at work.

Restart application and unlock locked file

Stef Merlijn
Stef Merlijn asked
on
307 Views
Last Modified: 2010-04-21
Hi,

In order to lock my application and disallow a second user using the application I use "CODE 1"
In order to restart my application I use "CODE 2".

The problem with this is that the application is restarted while the initial application is still running. Therefor file 'InUse.fil' is still locked and restarting is aborted.

Is there a way to redesign this code so restarting the application will work as required?

With kind regards,
Stef
*** CODE 1 ***
try
  vFileStream := TFileStream.Create( ExtractFilePath(Application.ExeName) + 'InUse.fil',fmCreate or fmShareExclusive);
  CreateLockRelease;
except
  MessageDlg('Program is in use', mtInformation, [mbOK], 0);
  Exit;
end;
*** END CODE 1 ***
 
*** CODE 2 ***
procedure TForm1.ApplicationRestart;
begin
  FileClose(FileCreate(ExtractFilePath(Application.ExeName)+'Data\Restart.txt'));
  WinExec(PChar(Application.ExeName), SW_SHOW);
  Application.Terminate;
  ExitProcess(0);
end;
*** END CODE 2 ***

Open in new window

Comment
Watch Question

software developer
CERTIFIED EXPERT
Top Expert 2008
Commented:
This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION
Stef MerlijnDeveloper

Author

Commented:
vFileStream is created in the sourcefile DPR of the project.
ApplicationRestart is on the mainform. So FreeAndNil(vFileStream); is giving me an error "Undeclared identifier". Do you have a solution for that?
Lukasz Zielinskisoftware developer
CERTIFIED EXPERT
Top Expert 2008
Commented:
This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION
Stef MerlijnDeveloper

Author

Commented:
Thank you very much.
Lukasz Zielinskisoftware developer
CERTIFIED EXPERT
Top Expert 2008

Commented:
...actually I would create separate unit with two functions:
LockFile and ReleaseFileLock. TFileStream would be variable not accessible outside this unit.
In .dpr there would be call to LocakFile and in ApplicationRestart and OnCloseQuery on main form there would be call to ReleasFileLock

ziolko.
Stef MerlijnDeveloper

Author

Commented:
I will keep that in mind. Thank you.
It might make the code more readable.

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.