如何防止应用程序在 WinRT 中使用文件

How to prevent app from using file in WinRT

我的应用程序有多个线程。第一个线程写入 StorageFile,第二个线程从同一个 StorageFile 读取。问题是,我无法阻止第二个线程读取该文件,而第一个线程正在写入该文件。我可以使用 Using 关键字来获得对文件的单一访问权限吗?

Whosebug 上有类似的问题,但它不适合我的解决方案。

我的代码:

    public async static Task<bool> Save(string filename, object o)
    {
        try
        {
            Stream stream;

            var folder = Windows.Storage.ApplicationData.Current.LocalFolder;
            var file = await folder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
            stream = await file.OpenStreamForWriteAsync();
            if (o == null || stream == null)
            { }
            else
            {
                DataContractSerializer ser = new DataContractSerializer(o.GetType());
                ser.WriteObject(stream, o);
            }


            return true;
        }
        catch (Exception e)
        {
            return false;
        }
    }

我终于通过在内存中的数据上加锁解决了这个问题,而不是在文件上,这会很耗时,但很优雅。然而,在根据 Srirama Sakthivel 的提示寻找解决方案的过程中,我发现这个主题非常有用。我希望这会对某人有所帮助。