현재 다른 작업을 수행 할 10 개의 새 스레드를 돌리는 엔진을 만들고 있습니다. 하지만 내 솔루션이 병렬로 실행되지 않는 것으로 나타났습니다.병렬 작업 사용
public async Task Start(Func<string, Task> action)
{
for (var i = 1; i <= config.threads; i++)
{
consumers.Add(getActionTask(action));
}
await Task.WhenAll(consumers);
}
private Task getActionTask(Func<string, Task> action)
{
return Task.Run(async() =>
{
// Do something that returns a string
String data = "Some string here";
await action(data);
}
}
는 첫 번째 스레드는 루프에 "안녕하세요"인쇄하는 Task.Delay(TimeSpan.FromSeconds(30));
두 번째 스레드를 할 것입니다 데이터를 기반으로 내가 2 개 스레드를 실행 말할 수 있습니다합니다.
지연이 끝나기 전에 인쇄 루프가 실행되지 않습니다. 구현에 문제가 있습니까?
지연 및 인쇄 문을 사용하여 코드를 게시 할 수 있습니까? 그건 그렇고, Task.Run에 대한 호출에서'await 액션 (데이터)'을 래핑하지 말고 필요 없다. 'getActionTask' 메소드는 단지'action (data);을 리턴해야합니다. –