【问题标题】:Add Data From Text File Using Parallel Programming使用并行编程从文本文件添加数据
【发布时间】:2019-05-10 23:00:11
【问题描述】:

我正在尝试从 .txt 文件中读取数据,将它们存储到列表中,然后使用并行编程同时执行两次。我有 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",它们都是确切的路径,只是不想有两行长的文件位置。 这是我需要做的,但要使用多线程、并行编程或异步编程。

【问题讨论】:

  • 我建议你去查找一些任务示例,或者 plinq,或者 AsParallel,或者甚至浏览一下 TPL 文档
  • @TheGeneral 我已经研究过了,我还没有发现任何东西。如果我还没有查过或者至少自己尝试过,我不会发布这个。我在这里看到过询问如何解析数据的帖子,这比这更简单。我也不会在 C# 中进行太多编码,它是我最不喜欢的语言之一,但我必须硬着头皮去学习它。不知道你为什么对一个简单的问题如此咄咄逼人。
  • 感谢您指出它具有侵略性,因为这确实不是本意。然而,这是一个质量非常低的问题,对未来的读者几乎没有什么好处,因为所有这些信息都已经在堆栈溢出和互联网上找到了。我建议研究任务和 TPL(任务并行库),看看你是怎么做的
  • @TheGeneral 好的,谢谢您的帮助。抱歉,这是一个如此简单的问题。花了一些时间查找它,我只是找不到解决方案。现在将检查 TPL。

标签: c# asynchronous parallel-processing


【解决方案1】:

如果您正在执行阻止表单在表单加载事件中锁定的异步过程,您可以执行以下操作。

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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2016-08-22
    相关资源
    最近更新 更多