Я обращаюсь к файлам XLSX и суммирую значения [FileSize]
столбца, он содержит более 100 тыс. Строк.
Я хотел использовать OLEDB
в сочетании с многозадачностью.После этого я хочу, чтобы задачи возвращали целочисленное значение / значение с плавающей запятой, чтобы я мог рассчитать процент каждого файла XLSX по сравнению с общим размером файла.Пока у меня есть этот код:
foreach (string subdir in alldir)
{
Task<int> iSize = Task<int>.Factory.StartNew(() =>
{
int result = 0;
using (OleDbConnection olecnn = new OleDbConnection(GetConnectionString(subdir)))
{
try
{
olecnn.Open();
using (OleDbCommand sumcmd = new OleDbCommand("SELECT SUM([File Size]) FROM [FileInfos$]"))
{
sumcmd.Connection = olecnn;
result = (int)sumcmd.ExecuteScalar();
//BarChart.Series["Memory Usage"].Points.AddXY(Path.GetFileName(subdir), result);
return result;
}
olecnn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString()); return result;
}
}
}).ContinueWith(cnt => cnt.Dispose());
}
Кажется, есть синтаксическая ошибка
Невозможно неявно преобразовать тип 'System.Threading.Tasks.Tasks
' в 'System.Threading.Tasks.Task<int>
'.Существует явное преобразование (вам не хватает приведения)?
Я прочитал документы, но не могу понять, как получить result
как целое число / число с плавающей запятой, поэтому я могу продолжить работу с этим значением.