
//Controls.Remove(_projectsListView);то вызовется это ControlRemoved += (o, e) => Dispose(); и ислючений не будет.Close(); и будет ислючение.
_projectsListView.ItemActivate += (o, e) =>
{
ListViewItem item = _projectsListView.SelectedItems[0];
string filePath = item.SubItems[2].Text;
string fileName = item.Name;
if (!File.Exists(filePath))
{
if (MessageBox.Show($"{fileName} не существует. Убрать проект из отрытых недавно?",
"Внимание!", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
RemoveItemFromRecentOpenedProjectsFile(item);
}
return;
}
FilePath = filePath;
UpdateItemTimeInFile(filePath: RecentOpenedProjectsFilePath, item);
Close();
//Controls.Remove(_projectsListView);
};
Rows.AddRange(rows) и теперь все добавляет даже в 1 потоке весьма быстро, и даже теперь с ParallerFor теперь добавление даже 100 строк ощущается мгновенно. Но всерано посмотрю статью может еще что-то можно оптимизировать!
tablesForSavingData = await Task.Run(()=> Serialization.DownloadTable(filePath));await Task.Run(() =>
{
tablesForSavingData = Serialization.DownloadTable(filePath);
if (tablesForSavingData.Count != 0)
{
int i = 1;
foreach (var table in tablesForSavingData)
{
tablesForViewData.Add(
table.ToDataGridView("table" + (i++).ToString()));
}
}
else tablesForViewData.Add(defaultTable);
MakeTableActive(1);
Invoke(() =>
{
foreach (var table in tablesForViewData)
Controls.Add(table);
});
});
new Thread(() =>
{
tablesForSavingData = Serialization.DownloadTable(filePath);
if (tablesForSavingData.Count != 0)
{
int i = 1;
foreach (var table in tablesForSavingData)
{
tablesForViewData.Add(
table.ToDataGridView("table" + (i++).ToString()));
}
}
else tablesForViewData.Add(defaultTable);
MakeTableActive(1);
Invoke(() =>
{
foreach (var table in tablesForViewData)
Controls.Add(table);
});
}).Start();
await new Task(() =>
{
Invoke(() =>
{
tablesForSavingData = Serialization.DownloadTable(filePath);
if (tablesForSavingData.Count != 0)
{
int i = 1;
foreach (var table in tablesForSavingData)
{
tablesForViewData.Add(
table.ToDataGridView("table" + (i++).ToString()));
Controls.Add(tablesForViewData[i - 2]);
}
}
else tablesForViewData.Add(defaultTable);
MakeTableActive(1);
});
});