C# 等待HttpPostedBaseFile另存为完成
我想在继续之前等待SaveAs完成,我尝试了一些不同的解决方案,但它仍然会立即继续,而不是等待上传完成。我所尝试的: 创建包装函数以返回int(这是我在堆栈溢出中发现的): 在我的主要方法中运行这个:C# 等待HttpPostedBaseFile另存为完成,c#,file-upload,upload,save,save-as,C#,File Upload,Upload,Save,Save As,我想在继续之前等待SaveAs完成,我尝试了一些不同的解决方案,但它仍然会立即继续,而不是等待上传完成。我所尝试的: 创建包装函数以返回int(这是我在堆栈溢出中发现的): 在我的主要方法中运行这个: var success = SaveFile(hpf, savedFileName); 我还尝试检查文件是否准备就绪: while (!IsFileReady(filePath)) { System.Threading.Thread.Sleep(500); } 称之为: [A
var success = SaveFile(hpf, savedFileName);
我还尝试检查文件是否准备就绪:
while (!IsFileReady(filePath))
{
System.Threading.Thread.Sleep(500);
}
称之为:
[Authorize(Roles = "L,I")]
public static bool IsFileReady(String sFilename)
{
// If the file can be opened for exclusive access it means that the file
// is no longer locked by another process.
try
{
using (FileStream inputStream = System.IO.File.Open(sFilename, FileMode.Open, FileAccess.Read, FileShare.None))
{
if (inputStream.Length > 0)
{
return true;
}
else
{
return false;
}
}
}
catch (Exception)
{
return false;
}
}
再说一次,运气不好。我只需要确保file.SaveAs(…)等待文件完成上载后才能继续。我不确定代码,但我认为Task/await可能就是您要查找的。您可以接受异常。检查是否有……没有例外。
[Authorize(Roles = "L,I")]
public static bool IsFileReady(String sFilename)
{
// If the file can be opened for exclusive access it means that the file
// is no longer locked by another process.
try
{
using (FileStream inputStream = System.IO.File.Open(sFilename, FileMode.Open, FileAccess.Read, FileShare.None))
{
if (inputStream.Length > 0)
{
return true;
}
else
{
return false;
}
}
}
catch (Exception)
{
return false;
}
}