Today I ran into a strange problem: Since a year and several versions / tests of the application the following code has been used successfully to replace a file with an other. 

```
File.Replace(path + ".tmp", path, null);

```

This has worked locally and also with UNC paths (network shares). But today I got the following error when I used this code to replace a file on a UNC path (local still works):

> 
> The process cannot access the file because it is being used by another process
> 
> 
> 

When I use the following code instead of the above, it works:

```
File.Delete(path);
File.Move(path + ".tmp", path);

```

So my questions:

* What is the difference between the two code snippets?
* Could it be that Microsoft have changed the way 'File.Replace' works?

I'm using .Net Framework 4.0 with Visual Studio 2010.

Thanks in advance.