我有一种方法,它将字节数组和int数作为输入,并将从数组中提取的输出写入以int数命名的新文本文件。假设我有6个整数,并且我想从字节数组中为这些整数中的每一个并行提取信息,那么您会建议采用哪种多线程方法?建议一种多线程方法
目前我正在使用async/await,但与同步方法相比,此代码需要更多时间。
private async void button1_Click(object sender, EventArgs e)
{
byte[] dec = File.ReadAllBytes(@"filepath");
DateTime fdate = offset.AddDays(dateadd);
int[] telemetry = { 1, 2, 3 };
DateTime test1 = DateTime.Now;
var tasks = new List<Task>();
foreach (int tm in telemetry)
{
tasks.Add(RunAsync(dec, tm, fdate));
}
await Task.WhenAll(tasks);
DateTime test2 = DateTime.Now;
draw(telemetry);
Console.WriteLine(test2.Subtract(test1));
}
async Task RunAsync(byte[] dec, int tm, DateTime fdate)
{
chartControl1.Series.Add(tm.ToString(), ViewType.Line);
using (StreamWriter writer = new StreamWriter(@"outputpath" + tm.ToString() + ".txt", true))
{
//DO PROCESSING
}
}
我做错了什么,请建议更改。
您可以使用'AsParallel()。ForEach()' – Valentin
“DO PROCESSING”中会发生什么?请注意,async/await不会自动使用多个线程。它使代码异步,但不一定是多线程的。 –
@Valentin谢谢,'Parallel.ForEach()'正在为我工作。 –