Есть тестовый код, используется c# azure storage client (последний 8.1.0). Если запускать его как .Net Framework ConsoleApp проблем не возникает, но если запустить как .Net Core ConsoleApp приложение отправляет первую партию сообщений и дальше просто ждёт. Как можно это исправить?
class Program
{
static int parallelTasks = 100;
static int count = 0;
static void Main(string[] args)
{
MainAsync(args).GetAwaiter().GetResult();
}
static async Task MainAsync(string[] args)
{
var task1 = RunAsync("First task", "messages1", parallelTasks);
var task2 = RunAsync("Second task", "messages2", parallelTasks);
await Task.WhenAll(task1, task2);
Console.WriteLine($"\r\n{task1.Result}\r\n{task2.Result}");
Console.ReadLine();
}
static async Task<string> RunAsync(string name, string queueName, int parallelTasks)
{
var account = CloudStorageAccount.DevelopmentStorageAccount;
var client = account.CreateCloudQueueClient();
var queue = client.GetQueueReference(queueName);
await queue.CreateAsync();
var stopwatch = Stopwatch.StartNew();
var tasks = new List<Task>();
for (int i = 0; i < 1000; i++)
{
tasks.Add(AddMessageAsync(i, queue));
while (tasks.Count > parallelTasks)
{
var task = await Task.WhenAny(tasks);
tasks.Remove(task);
}
}
await Task.WhenAll(tasks);
var completed = stopwatch.ElapsedMilliseconds;
stopwatch.Stop();
await queue.DeleteAsync();
return $"{completed} from {name}";
}
static async Task AddMessageAsync(int i, CloudQueue queue)
{
await queue.AddMessageAsync(new CloudQueueMessage(Encoding.UTF8.GetString(new byte[1024])));
Interlocked.Increment(ref count);
Console.Write($"\r{count}");
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Не могу организовать рекурсиюПодскажи, где нужно исправить, чтобы функция правильно работала
Как получить число (int), полученное в результате такого SQL-запроса: