Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在对文件执行任何修改之前,如何确保文件未被锁定?_C#_.net - Fatal编程技术网

C# 在对文件执行任何修改之前,如何确保文件未被锁定?

C# 在对文件执行任何修改之前,如何确保文件未被锁定?,c#,.net,C#,.net,第1步-我手动复制一个文件,从源文件读取,然后在块中写入目标文件。我会一直打开文件句柄,直到所有副本都没有结束。复制完成后,手柄安全关闭 第2步-复制结束后,我设置时间戳、属性、ACL和其他内容 在第2步的某个时候,我发现文件正被其他进程使用。这个问题主要针对exe文件。我从哪个进程使用该文件得到了答案。一个sper应答,操作系统锁定文件,在很短的时间内设置图标或文件上的其他信息 但如果我在完成步骤1后立即执行步骤2,则会出现访问错误。如何确保操作系统不会锁定文件 根据,检查文件访问的循环不是解

第1步-我手动复制一个文件,从源文件读取,然后在块中写入目标文件。我会一直打开文件句柄,直到所有副本都没有结束。复制完成后,手柄安全关闭

第2步-复制结束后,我设置时间戳、属性、ACL和其他内容

在第2步的某个时候,我发现文件正被其他进程使用。这个问题主要针对exe文件。我从哪个进程使用该文件得到了答案。一个sper应答,操作系统锁定文件,在很短的时间内设置图标或文件上的其他信息

但如果我在完成步骤1后立即执行步骤2,则会出现访问错误。如何确保操作系统不会锁定文件


根据,检查文件访问的循环不是解决方案,因为锁定可能在步骤2中的任何时间点发生。步骤2不是原子的,我需要多次打开/关闭同一个文件。

如果问题是由资源管理器导致的exe文件引起的,然后,您可以使用虚拟扩展名编写文件,并在第2阶段结束后将扩展名更改为。exe@jekcom我注意到了exe,但我需要健壮的解决方案。@Asad,文件不是只读的,因为我正在手动复制。所以情况并非如此。我假设第1步和第2步是通过某种文件流完成的?在第2步完成之前,您不能让流保持打开状态吗?@jekcom第1步是使用FileStream完成的,但在第2步中不是true。