Poniższy kod wydaje się czasami powodować utworzenie tego stosu. Wygląda na to, że dzieje się to w ramach, gdy metoda dispose jest wywoływana na wewnętrznym obiekcie FileStream
? Wydaje mi się, że to błąd, jakieś pomysły?Plik MonoTouch File.ReadAllText zgłasza wyjątek w wewnętrznym pliku FileStream.Dispose()
var previousVersion = long.Parse(File.ReadAllText(Paths.VersionFile));
StackTrace:
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
EDIT VersionFile
ścieżka chwycony w ten sposób:
public static string VersionFile {
get {
var path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
return Path.Combine(path, "version.dat");
}
}
co jest przekazywane za pomocą 'Paths.VersionFile'? –
@ DanielA.White Zobacz zmiany –
Potrzebujemy więcej kontekstu dotyczącego Twojej aplikacji, np. Mogę uruchomić kod w pętli za 10000x bez żadnego problemu, ponieważ coś innego musi się różnić. Na przykład kiedy jest tworzony, aktualizowany, usuwany? przez jakikolwiek inny wątek? czy występuje na urządzeniach, symulatorach, obu? ... i wszystkie numery wersji. – poupou