为什么在 Xamarin PCL 路径上共享冲突
why Sharing violation on path in Xamarin PCL
这是完整的错误
Sharing violation on path
/data/data/com.test.app/files/myapp/myappfile.txt
我有静态 class 和静态在静态方法中有这个方法,但问题仍然存在
我尝试将其包装在 lock 语句中,但我不确定它是否可以解决 issue.Is 是否有更好的方法来解决此问题
这是导致问题的代码片段
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原生项目。
我在我的项目中使用代码
更新:
有时此代码片段会损坏 file.I 如果我尝试写入 times 会出现以下错误。
Could not find file
"/data/data/com.test.app/files/myapp/myappfile.txt"
欢迎提出任何有用的建议
这是正确的代码。文件系统没有实现锁,访问文件系统总是容易出错,你必须预料到操作可能会失败并使用try/catch来捕获异常。
因为这是 Xamarin 应用程序,您可能拥有只有您的应用程序才能访问这些文件的奢侈,因此最终您可能会在应用程序内部解决问题。最好的解决方案将取决于上下文,但在大多数情况下,最好的想法可能是使用去抖动策略(使用 Timer
以便关键方法的启动频率可能不会超过一次,例如 100 毫秒)。
这是完整的错误
Sharing violation on path /data/data/com.test.app/files/myapp/myappfile.txt
我有静态 class 和静态在静态方法中有这个方法,但问题仍然存在
我尝试将其包装在 lock 语句中,但我不确定它是否可以解决 issue.Is 是否有更好的方法来解决此问题
这是导致问题的代码片段
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原生项目。
我在我的项目中使用代码
更新:
有时此代码片段会损坏 file.I 如果我尝试写入 times 会出现以下错误。
Could not find file "/data/data/com.test.app/files/myapp/myappfile.txt"
欢迎提出任何有用的建议
这是正确的代码。文件系统没有实现锁,访问文件系统总是容易出错,你必须预料到操作可能会失败并使用try/catch来捕获异常。
因为这是 Xamarin 应用程序,您可能拥有只有您的应用程序才能访问这些文件的奢侈,因此最终您可能会在应用程序内部解决问题。最好的解决方案将取决于上下文,但在大多数情况下,最好的想法可能是使用去抖动策略(使用 Timer
以便关键方法的启动频率可能不会超过一次,例如 100 毫秒)。