我试图将我编写的方法转换为线程安全的(在需要时),但我并不确定在哪些瓶颈可能会发生需要线程化。
这是我创建的一种方法,用于将本地CSV文件加载到dataTable中,该文件是根据CSV中的内容动态创建的。
private void CsvLoader()
{
var openCsv = new OpenFileDialog
{
InitialDirectory = "c:\\",
Filter = "CSV file (*.csv)|*.csv",
FilterIndex = 2,
RestoreDirectory = true
};
if (openCsv.ShowDialog() != DialogResult.OK) return;
if (!openCsv.CheckFileExists) return;
var csv = new CachedCsvReader(new StreamReader(openCsv.FileName), true);
try
{
var columnCount = csv.FieldCount;
var headers = csv.GetFieldHeaders();
var adt = new DataTable();
for (var i = 0; i < columnCount; i++)
{
adt.Columns.Add(new DataColumn(headers[i]));
}
while (csv.ReadNextRecord())
{
var rowOfData = adt.NewRow();
for (var number = 0; number < columnCount; number++)
{
rowOfData[number] = csv[number];
}
adt.Rows.Add(rowOfData);
}
dataGridView1.DataSource = adt;
SunderCsv(adt);
}
catch (Exception xmlExc)
{
//exception logging
}
}
对于这样的方法,我的印象是我需要创建一个线程,如下所示:
Thread t = new Thread(someParameterHere?);
t.Start();
我只是将整个方法包装在一个线程中,还是只包含循环/迭代?我正在寻找一些指导,因为我刚刚开始使用线程。