我有一種方法,它將字節數組和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()'正在爲我工作。 –