DataGridView не имеет столбцов

Это c # окна формы.

У меня есть представление сетки данных, которое должно отображать два столбца, имена файлов и дату изменения. Я делаю это через задачу. У меня также есть класс, который содержит только имя файла и пути, источник связывания и представление сетки данных. Эта задача запускает метод, в котором передается класс. Как только задача будет выполнена, у класса должно появиться представление сетки, которое я затем смогу установить в форме сетки обратно на форму.

Класс выглядит так:

class GetLogFilesParameters
{
    public string FileNameandPath;
    public BindingSource BindingSource;
    public DataGridView GridView;

    public GetLogFilesParameters(string _fileNameAndPath)
    {
        FileNameandPath = _fileNameAndPath;
        BindingSource = new BindingSource();
        GridView = new DataGridView();
        GridView.DataSource = BindingSource;
    }
}

Метод, который вызывает моя задача, выглядит следующим образом:

private static void GetLogFilesTest(GetLogFilesParameters FormFields)
    {
        Cursor.Current = Cursors.WaitCursor;

        try
        {
            //Setup data table
            DataTable FileList = new DataTable();
            FileList.Clear();
            DataColumn FileNameColumn = new DataColumn();
            FileNameColumn.ColumnName = "FileName";
            FileNameColumn.DataType = System.Type.GetType("System.String");

            DataColumn DateColumn = new DataColumn();
            DateColumn.ColumnName = "ModifiedDate";
            DateColumn.DataType = System.Type.GetType("System.DateTime");

            FileList.Columns.Add(FileNameColumn);
            FileList.Columns.Add(DateColumn);

            //Get a list of files in a directory
            string[] files = Directory.GetFiles(FormFields.FileNameandPath, "*.log");

            //Loop through the files and fill the data table with a row for each
            foreach (string file in files)
            {
                FileInfo FileInformation = new FileInfo(file);
                DataRow row = FileList.NewRow();
                row["FileName"] = FileInformation.Name;
                row["ModifiedDate"] = FileInformation.LastWriteTime;
                FileList.Rows.Add(row);
            }

            //FormFields.GridView.Columns.Add("FileName", "File Name");
            //FormFields.GridView.Columns.Add("ModifiedDate", "Modified Date");
            FormFields.GridView.AutoGenerateColumns = true;

            //Setup the binding source
            FormFields.BindingSource.DataSource = FileList;
            FormFields.BindingSource.Sort = "ModifiedDate DESC";

            FormFields.GridView.Columns[0].Width = (FormFields.GridView.Width / 10) * 6;
            FormFields.GridView.Columns[1].Width = (FormFields.GridView.Width / 10) * 4;
        }
        catch (Exception ex)
        {
            string ErrorText = "Error trying to get the list of log files." + Environment.NewLine + Environment.NewLine;
            ExceptionLogger.LogIt(ErrorText, "Exception");
            MessageBox.Show(ErrorText + ex.ToString());
        }
        finally
        {
            Cursor.Current = Cursors.Default;
        }
    }

Моя задача выглядит так:

GetLogFilesParameters GetLogFilesParameters = new GetLogFilesParameters(EpicorSenderPath);
            Task tGetFiles1 = new Task(() => GetLogFilesTest(GetLogFilesParameters));
            tGetFiles1.Start();
            tGetFiles1.ContinueWith((antecedent) =>
                {
                    gvEpicorSenderFiles = GetLogFilesParameters.GridView;
                }, TaskScheduler.FromCurrentSynchronizationContext());

Я получаю ошибку System.ArgumentOutOfRangeException: индекс вышел за пределы допустимого диапазона. Должен быть неотрицательным и меньшим, чем размер коллекции. Это происходит в методе в этой строке:

FormFields.GridView.Columns[0].Width = (FormFields.GridView.Width / 10) * 6;

Это происходит потому, что у gridview нет столбцов в соответствии с отладкой. Кроме того, когда он имеет строки и данные. Я не знаю, что не так.

Ответы на вопрос(1)

Ваш ответ на вопрос