改变现有方法以包含线程

时间:2015-07-24 19:31:02

标签: c# multithreading thread-safety

我试图将我编写的方法转换为线程安全的(在需要时),但我并不确定在哪些瓶颈可能会发生需要线程化。

这是我创建的一种方法,用于将本地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();

我只是将整个方法包装在一个线程中,还是只包含循环/迭代?我正在寻找一些指导,因为我刚刚开始使用线程。

0 个答案:

没有答案