C# 为什么在Xamarin PCL中共享路径冲突

C# 为什么在Xamarin PCL中共享路径冲突,c#,multithreading,xamarin,static-methods,portable-class-library,C#,Multithreading,Xamarin,Static Methods,Portable Class Library,这是完全的错误 在路径上共享冲突 /data/data/com.test.app/files/myapp/myappfile.txt 我有静态类和静态类,静态方法中有这个方法,但问题仍然发生 我试着用lock语句来包装它,但我不确定它是否解决了这个问题。有没有更好的方法来解决这个问题 下面是导致此问题的代码片段 try { var directory = await NavigateToFolder(director

这是完全的错误

在路径上共享冲突 /data/data/com.test.app/files/myapp/myappfile.txt

我有静态类和静态类,静态方法中有这个方法,但问题仍然发生

我试着用lock语句来包装它,但我不确定它是否解决了这个问题。有没有更好的方法来解决这个问题

下面是导致此问题的代码片段

            try
            {
                var directory = await NavigateToFolder(directoryName);
                IFile file = await directory.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
                await file.WriteAllTextAsync(text);
            }
            catch (Exception e)
            {
                Debug.WriteLine("Error saving:" + e.Message);
            }
供参考:

我的项目是Xamarin本地项目

我正在整个项目中使用该代码

更新:

有时这个代码段会破坏文件

找不到文件 /data/data/com.test.app/files/myapp/myappfile.txt


欢迎提供任何有用的建议

这是正确的代码。文件系统不实现锁定,访问文件系统总是容易出错,您必须预料操作可能会失败,并使用try/catch捕获异常


由于这是Xamarin应用程序,您可能有一种奢侈,即只有您的应用程序才能访问文件,因此最终您可能会在应用程序内部修复该问题。最好的解决方案取决于上下文,但在大多数情况下,最好的方法可能是使用定时器的去抖动策略,以便关键方法不会在100毫秒内启动超过一次。

什么是IFile?是一次性的吗?也许你需要把它包装成一个小盒子?