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);
});
});
std::vector<type>* vec = new();
auto vec = new std::vector<type>();
Получается он все равно ждет пока выполнится Task и потом идет дальше, и метод получается выполняется в главном потоке? но мне нужно чтобы весь метод был в другом потоке.
то все работает асинхронно вроде.(я первоначально забыл run вызвать).
P.S. Как еще понять когда нужен Invoke, если я создал новые объекты в этом (новом) потоке и методы которые с ними взаимодействуют созданы в ином?