class Portizan
{
void Method()
{
Random rnd = new Random();
int wait = rnd.Next(10000, 25000);
Console.WriteLine($"Будет идти {wait} мс");
System.Threading.Thread.Sleep(wait);
}
async Task MethodAsync()
{
await Task.Run(() => Method());
Console.WriteLine($"Вызвал метод MethodAsync");
}
public async Task GoAsync()
{
//await SetVarAsync();
//await SetGunAsync();
await MethodAsync();
}
}
class Test
{
public async Task ZgorAsync()
{
for (int i = 0; i < 10; i++)
{
new Thread(async () =>
{
Portizan portizan = new Portizan();
await portizan.GoAsync();
}).Start();
}
//Console.ReadLine();
}
}
Task.Run
class Portizan
{
void Method()
{
Random rnd = new Random();
int wait = rnd.Next(10000, 25000);
Console.WriteLine($"Будет идти {wait} мс");
System.Threading.Thread.Sleep(wait);
}
Task MethodAsync()
{
var task = Task.Run(() => Method());
Console.WriteLine($"Вызвал метод MethodAsync");
return task;
}
public Task GoAsync()
{
return MethodAsync();
}
}
Thread.Sleep // не лучшее решение для вашей задачи, так как заблокирует поток из пула потоков.
class Test
{
public async Task ZgorAsync()
{
var tasks = Enumerable.Range(0, 10)
.Select((x) => {
Portizan portizan = new Portizan();
return portizan.GoAsync();
})
.ToArray();
await Task.WaitAll(tasks);
}
}