Сбой приложения при открытии нового сгенерированного файла в пакете xamarin.plugin.filepicker nuget

В приложении xamarin.forms я использовал пакет nuget xamarin.plugin.filepicker для просмотра и открытия файлов, поэтому в моем приложении процесс заключается в том, что я открываю файл из файлового браузера и обновляю значения в файле и закрываю его, когда я иду назад и попробуйте открыть только что сгенерированный файл, приложение дает сбой, вот код, связанный с ним, и тип файла — CSV. пожалуйста, помогите мне решить эту проблему. И когда приложение выходит из строя, оно отображается как Ваше приложение вошло в состояние останова, но нет кода для отображения, потому что все потоки выполняли внешний код (обычно код системы или фреймворка). со ссылкой на объект, не установленной на экземпляр объекта alert .

  this is the code for browsing files using xamarin.plugin.filepicker.


    private Plugin.FilePicker.Abstractions.FileData file = default(Plugin.FilePicker.Abstractions.FileData);

    public async void OnBrowse(object o, EventArgs args)
    {
        try
        {
            //  var file_path =  
            this.file = await CrossFilePicker.Current.PickFile().ConfigureAwait(true);           /*CrossFilePicker.Current.PickFile();//*/
            if (this.file == null)
            {
                // return;
            }
            else
            {
                string extensionType = this.file.FileName.Substring(
                    this.file.FileName.LastIndexOf(".", StringComparison.Ordinal) + 1,
                    this.file.FileName.Length - this.file.FileName.LastIndexOf(".", StringComparison.Ordinal) - 1).ToLower();

                fileName = this.file.FileName;

                if (extensionType.Equals("csv"))
                {
                    csv_file.Text = (fileName);
                }
                else
                {
                    await this.DisplayAlert("Name of the file:" + file.FileName, "File info", "OK");
                }
            }
            if (SettingsPage.loggingEnabled)
            {
                LogUtilPage.Initialize("/storage/emulated/0");
            }
        }
        catch (Exception e)
        {
            await DisplayAlert("Alert", "Something went wrong", "OK");
            if (SettingsPage.loggingEnabled)
            {
                LogUtilPage.Log(e.Message);
            }
        }


    }

это код для открытия csv

    public async void OnProcess(object o, EventArgs args)
    {

        if (!(string.IsNullOrWhiteSpace(csv_file.Text)))
        {

            if (App.Current.MainPage is NavigationPage)
            {
                try
                {

                    _fileCSV = new FileCSV();
                    {

                        _fileCSV.FileName = fileName;
                        _fileCSV.ProcessDate = DateTime.Now;
                        _fileCSV.Status = "0";

                    };

                    _database.AddFiles(_fileCSV);

                    List<ItemsCSV> items = new List<ItemsCSV>();

                    string[] lines = File.ReadAllLines(string.Format(@"{0}", this.file.FilePath));
                    var reader = new StreamReader(this.file.FilePath);

                    if (lines != null)
                    {

                        for (int x = 1; x < lines.Length; x++)
                        {
                            string data = lines[x];

                            var item = ParseDelimitedString(data, ',').ToArray();

                            _itemsCSV = new ItemsCSV();
                            {
                                _itemsCSV.Cycle_Count = item.ElementAtOrDefault(0);
                                _itemsCSV.Line_Number = item.ElementAtOrDefault(1);
                                _itemsCSV.Item_Number = item.ElementAtOrDefault(2);
                                _itemsCSV.Name = item.ElementAtOrDefault(3);
                                _itemsCSV.Aisle = item.ElementAtOrDefault(5);
                                _itemsCSV.Bin = item.ElementAtOrDefault(6);
                                _itemsCSV.Level = item.ElementAtOrDefault(7);
                                _itemsCSV.Warehouse = item.ElementAtOrDefault(4);
                                _itemsCSV.Order_Qty = item.ElementAtOrDefault(8);
                                _itemsCSV.Order_UOM = item.ElementAtOrDefault(9);
                                _itemsCSV.Consumption_Qty = item.ElementAtOrDefault(10);
                                _itemsCSV.Consumption_UOM = item.ElementAtOrDefault(11);
                                _itemsCSV.NewLocation = item.ElementAtOrDefault(5) + "." + item.ElementAtOrDefault(6) + "." + item.ElementAtOrDefault(7);
                                if (item.ElementAt(8) == string.Empty)
                                {
                                    _itemsCSV.Status = "";
                                }
                                else
                                {
                                    _itemsCSV.Status = "Counted";
                                }
                                _itemsCSV.LastUpdate = DateTime.Now;
                                _itemsCSV.CSVId = _fileCSV.Id;

                            };
                            items.Add(_itemsCSV);
                            _database.AddItems(_itemsCSV);

                        }

                        var result = await DisplayAlert("", "CSV has been processed, please do cycle count", "OK", "Cancel");

                        if (result == true)
                        {
                            var cyclecountPage = new CycleCountPage(items, 1, "MainPage", this.file.FilePath);
                            await Navigation.PushAsync(cyclecountPage);
                        }
                        else
                        {

                        }

                    }

                    //     LogUtilPage.Initialize(Path.GetDirectoryName(this.file.FilePath));

                }
                catch (Exception e)
                {
                    await DisplayAlert("Exception", "Something went wrong", "OK");
                    //  LogUtilPage.Initialize(this.file.FilePath);
                    if (SettingsPage.loggingEnabled)
                    {
                        LogUtilPage.Log(e.Message);
                    }
                }

            }
        }
        else
        {
            await DisplayAlert("Alert", "File name is mandatory", "OK");
        }
    }

прикреплен результат отладки


person D V    schedule 04.06.2018    source источник
comment
Какая строка вызывает сбой? Какое исключение выбрасывается?   -  person Jason    schedule 04.06.2018
comment
в нем говорится, что ваше приложение перешло в состояние останова, но код для отображения отсутствует, поскольку все потоки выполняли внешний код (обычно код системы или фреймворка). и ссылка на объект не установлена ​​​​на экземпляр объекта   -  person D V    schedule 04.06.2018
comment
stackoverflow.com/questions/46634776/   -  person Jason    schedule 04.06.2018
comment
и вы по-прежнему можете использовать отладчик для пошагового выполнения кода и определения строки, вызывающей исключение, и/или использовать попытку перехвата, чтобы сузить его.   -  person Jason    schedule 04.06.2018
comment
пожалуйста, найдите мой обновленный пост   -  person D V    schedule 04.06.2018
comment
прочтите пожалуйста мои комментарии, видимо вы игнорируете мои предложения   -  person Jason    schedule 04.06.2018