我试图从.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”来说,它们都是精确的路径,只是不想有两行长长的文件位置。 这是我需要做的,但是要使用多线程,并行编程或异步编程来完成。
答案 0 :(得分: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);
}