Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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#_Asp.net_Asp.net Mvc_Model View Controller_Asp.net Core Mvc - Fatal编程技术网

C# 我能';无法删除图像文件,因为它已被另一个进程使用

C# 我能';无法删除图像文件,因为它已被另一个进程使用,c#,asp.net,asp.net-mvc,model-view-controller,asp.net-core-mvc,C#,Asp.net,Asp.net Mvc,Model View Controller,Asp.net Core Mvc,我无法删除图像文件,因为在我创建图像文件后,它被另一个进程使用。问题发生在我的进程运行时。如何终止打开该文件的进程,以便其他进程能够访问该文件 我使用以下代码创建图像文件: string uploads = Path.Combine(Hosting.WebRootPath, "uploads"); string fullPath = Path.Combine(uploads, fileName); entity.file.CopyTo(new FileStream(fullPath, FileM

我无法删除图像文件,因为在我创建图像文件后,它被另一个进程使用。问题发生在我的进程运行时。如何终止打开该文件的进程,以便其他进程能够访问该文件

我使用以下代码创建图像文件:

string uploads = Path.Combine(Hosting.WebRootPath, "uploads");
string fullPath = Path.Combine(uploads, fileName);
entity.file.CopyTo(new FileStream(fullPath, FileMode.Create));FileMode.Create));

文件浏览器无法读取图像文件,
java-logo-png-300x300
,直到我停止在VS中运行该项目


你不能这样做。但是您可以等到进程完成后,使用
FileInfo.IsFileLocked()
来验证您的文件是否正在使用

示例代码:

public static void Test(){
    FileInfo inf = new FileInfo("your_file");

    while (inf.IsFileLocked()) {
      Console.WriteLine("File locked, wait...");
    };
}

重要提示:请记住每次打开流时都要关闭它们,因为这可能会导致文件锁定。

我对问题所在有点困惑,但从外观上看,您从未关闭
文件流。以这种方式打开文件流时,文件的
共享模式
设置为无,因此其他进程无法读取/写入/删除该文件。您真正需要做的就是将最后一行更改为:

entity.file.CopyTo(new FileStream(fullPath, FileMode.Create));


复制完成后,文件将被释放,以便其他进程能够访问它。

如图所示,一个原因可能是您没有将流语句包装到using块中,或者没有手动处理它们。

图像是否显示在网页的任何位置?当我添加新的书籍时,图片是如何放置在连接处的/@ChetanRanpariya,这就是have image,我不能在同一次运行中删除书籍,因为图片正在“添加过程”。。。如果我停止并重新运行project,我可以正常删除它。@DourHighArch我的代码中没有错误,我想我必须在添加文件后编写代码来剪切进程。//CopyTo(新的FileStream(fullPath,FileMode.Create));
//Opens the file
using (FileStream stream = new FileStream(fullPath, FileMode.Create))
{
    //Copies data from entity.file to stream
    entity.file.CopyTo(stream);
}
//File was released (disposed of) thanks to the using statement