There is one more hurdle, you'll trigger the error that the file is in use, also when you SET SAFETY OFF.
What I did is COPY FILE from some specific directory to the directory referenced by the image.picture property, and that fails with error #3. That error happens because the image control uses the image COPY wants to overwrite it. That problem can be overcome by setting Picture to "" temporarily. I don't even need to CLEAR RESOURCE, but the situation differs in the EXE.
Because notice what happens when you build an EXE from your project. The image file will become a project item and be embedded into the EXE, so replacing the file nor CLEAR RESOURCES will cause an image change. The image control doesn't even load its image from the file, it loads it from the EXE.
I guess your idea is based on keeping images out of an EXE, which is possible, as you can decide for each project file to include or exclude it from the EXE. You have to do this for any image you want to be able to later read from some directory and exchange it with other files.
To get this without any blinking or flickering artifact, you should use Thisform.Lockscreen=.T., then set image.Picture="", then replace the image file, then set image.Picture back to what it was and then set Thisform.Lockscreen = .F.
I haven't thoroughly tested under which other circumstances this perhaps still fails, but before I'd deep dive into finding other problems with this, this minimum procedure of setting Picture="" temporarily actually means the whole thing is simpler by setting the image.Picture to the other file instead of copying over the file name given in the Picture property. Then you don't need to copy files.
I mean, codewise it doesn't make much of a difference if you need to program to copy some file to the file given by image.Picture, or if you simply set image.picture to the other file name. Since you need to set the picture property anyway, it's simplest to do that once, instead of doing it once to "" and back to what it as, copying a file in the meantime. Just setting image.Picture to the other file works for me, too, also without CLEAR RESOURCES, I just set form.lockscreen=.T. before changing image.Picture and then set form.lockscreen back to .F. and the picture change takes effect.
Chriss