首页 文章

使用并行编程从文本文件添加数据

提问于
浏览
0

我试图从.txt文件中读取数据,将它们存储到List中,然后使用并行编程同时执行此操作两次 . 我有2个.txt文件,其中包含一堆数字要加起来 . 我声明了两个文件,然后将它们存储到List对象中 .

private void Form1_Load(object sender, EventArgs e)
{
    var file1 = @"filepath.txt";
    var file2 = @"filepath.txt";
    List<string> List = File.ReadAllLines(file1).ToList();
    List<string> List2 = File.ReadAllLines(file2).ToList();

    int num = 0;
    int num2 = 0;

    for(int i = 0; i < List.Count i++)
    {
        num += Convert.ToInt16(List[i].ToString());
    }

    for(int i = 0; i < List2.Count; i++)
    {
        num2 += Convert.ToInt16(List2[i].ToString());
    }
    listBox1.Items.Add(num);
    listBox2.Items.AddNum
}

至于@“filepath.txt”,它们都是精确的路径,只是不想有2行长的文件位置 . 这是我需要做的,但是使用多线程,并行编程或异步编程来做 .

1 回答

  • 0

    如果您在异步进程之后阻止表单在表单加载事件中锁定,则可以执行类似这样的操作 .

    private async void Form1_Load(object sender, EventArgs e)
    {
        await Task.Factory.StartNew(() =>
        {
          //Your code here
        },  CancellationToken.None, TaskCreationOptions.None,  TaskScheduler.FromCurrentSynchronizationContext());
    }
    

    如果要在程序中包含并行性,可以执行类似的操作 .

    private async void Form1_Load(object sender, EventArgs e)
    {
        TaskScheduler taskScheduler = TaskScheduler.FromCurrentSynchronizationContext();
        await Task.Factory.StartNew(() =>
        {
            ParallelOptions options = new ParallelOptions();
            options.TaskScheduler = taskScheduler;
            Parallel.Invoke(options,
                () =>
                {
                    //Update your listBox1
                },
                () =>
                {
                    //Update your listBox2
                }
                );
        }, CancellationToken.None, TaskCreationOptions.None, taskScheduler);
    }
    

相关问题