gpt4 book ai didi

c# - MonoTouch File.ReadAllText 在内部 FileStream.Dispose() 上抛出异常

转载 作者:可可西里 更新时间:2023-11-01 04:03:35 25 4
gpt4 key购买 nike

以下代码似乎偶尔会产生此堆栈跟踪。当在内部 FileStream 对象上调用 dispose 方法时,它看起来像是在框架内发生的?对我来说似乎是个错误,有什么想法吗?

var previousVersion = long.Parse(File.ReadAllText(Paths.VersionFile));

堆栈跟踪:

 System.IO.IOException: Invalid parameter
at System.IO.FileStream.Dispose (Boolean disposing) [0x00000] in <filename unknown>:0
at System.IO.Stream.Close () [0x00000] in <filename unknown>:0
at System.IO.StreamReader.Dispose (Boolean disposing) [0x00000] in <filename unknown>:0
at System.IO.TextReader.Dispose () [0x00000] in <filename unknown>:0
at System.IO.File.ReadAllText (System.String path) [0x00000] in <filename unknown>:0
at CatalystHD.Shared.BaseLoginController.CheckIfFirstRunThisVersion () [0x00000] in <filename unknown>:0
at CatalystHD.Shared.BaseLoginController.ViewDidLoad () [0x00000] in <filename unknown>:0
at MonoTouch.UIKit.UIViewController.get_View () [0x00000] in <filename unknown>:0
at CatalystHD.IPad.RootViewController.AnimateTo (MonoTouch.UIKit.UIViewController aController, UIViewAnimationTransition transition) [0x00000] in <filename unknown>:0
at CatalystHD.IPad.RootViewController.Logout (Boolean timeout) [0x00000] in <filename unknown>:0
at CatalystHD.IPad.NotebookSelectionController.logoutButton_Clicked (System.Object sender, System.EventArgs e) [0x00000] in <filename unknown>:0
at MonoTouch.UIKit.UIBarButtonItem Callback.Call (MonoTouch.Foundation.NSObject sender) [0x00000] in <filename unknown>:0
at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x00000] in <filename unknown>:0
at MonoTouch.UIKit.UIApplication.Main (System.String[] args) [0x00000] in <filename unknown>:0
at CatalystHD.Application.Main (System.String[] args) [0x00000] in <filename unknown>:0

编辑VersionFile 路径是这样抓取的:

public static string VersionFile {
get {
var path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
return Path.Combine(path, "version.dat");
}
}

最佳答案

如果非要我猜的话,我认为您可能会因为隐式的 Flush() 而陷入竞争状态。在处理引擎盖下时发生的 FileStream在那ReadAllText称呼。

(注意:不是在单声道源前面,所以无法确认确切的行为)

是否有可能:

  • 您正在更换/重新开放/等等。另一个线程中的相同文件路径?
  • 在另一个线程之后或在另一个线程中立即删除该路径?
  • 否则无法访问已检查的路径? (文件共享卸载?)

关于c# - MonoTouch File.ReadAllText 在内部 FileStream.Dispose() 上抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9589704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com