C# 如何识别完全创建的文件

C# 如何识别完全创建的文件,c#,.net,windows-mobile,C#,.net,Windows Mobile,如何识别已完全在c#中创建的文件 我们需要使用哪个命令来查看文件是否已完全创建。。一些大文件需要时间才能完全创建,如何识别它们 谢谢我知道的唯一方法是尝试打开它,看看是否还有另一个进程保留了它,例如: private static Boolean FileInUse(FileInfo file) { Boolean inUse = false; try { using (file.OpenRead()) {}

如何识别已完全在c#中创建的文件

我们需要使用哪个命令来查看文件是否已完全创建。。一些大文件需要时间才能完全创建,如何识别它们


谢谢

我知道的唯一方法是尝试打开它,看看是否还有另一个进程保留了它,例如:

    private static Boolean FileInUse(FileInfo file)
    {
        Boolean inUse = false;
        try
        {
            using (file.OpenRead()) {}
        }
        catch (Exception exception)
        {
            inUse = true;
        }

        return inUse;
    }

您是指由另一个进程创建的文件?文件创建进程是否由您的代码/控制?否。。我的意思是,我创建的文件是否已完成取决于打开文件的共享选项,即使另一个进程仍在写入该文件,这可能会成功。-1:此代码将成功打开仍由其他进程打开但未锁定读取的文件。很多应用程序都是这样做的。其中一些甚至允许其他应用程序在写入时写入文件。我需要在UI上显示创建的文件,但我会在文件创建后立即收到创建文件通知,但完全写入文件需要一些时间,直到我在循环中等待,但此代码工作正常,但并非适用于所有情况,有时,虽然文件未创建,但它将提供读取权限,我的意思是在文件末尾。表示当文件写入上述内容时完成。。你知道如何锁定罚款吗。。直到编写完成。这似乎有点粗糙-FileInfo.Open()可能失败的所有其他可能原因是什么。当然,它们并不都意味着文件“正在使用”。Christian.K是正确的。Grabit可能需要检查异常对象,以查明是否存在共享冲突或其他问题。但我认为解决方案应该仍然有效。
private static Boolean FileInUse(FileInfo file)
        {
                Boolean inUse = false;
                try
                {
                        using (file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None)) {}
                }
                catch (Exception exception)
                {
                        inUse = true;
                }

                return inUse;
        }