Как в переменную записать результат быстрейшего метода(два раза вызывается один метод с разными передаваемыми значениями, нужен результат быстрейшего метода)?
Судя по метке, метод у вас асинхронный. В таком случае можно воспользоваться Task.WhenAny()
:
public async Task<int> FooAsync(int x)
{
//...
}
...
var task1 = FooAsync(1);
var task2 = FooAsync(2);
var fastestTask = await Task.WhenAny(task1, task2);
var result = fastestTask.Result;
Однако может так случиться, что какой-либо таск завершится быстрее из-за исключения. В таком случае нужно снова вызвать Task.WhenAny()
для оставших тасков. В общем случае решение может выглядеть так:
var task1 = FooAsync(1);
var task2 = FooAsync(2);
var task3 = FooAsync(3);
var tasks = new List<Task<int>>() { task1, task2, task3 };
int result;
while (tasks.Count > 0)
{
var fastestTask = await Task.WhenAny(tasks);
if (fastestTask.IsCompleted)
{
result = fastestTask.Result;
break;
}
else // если таск упал или был отменен
{
tasks.Remove(fastestTask);
}
}
Ждать или отменять оставшиеся таски, если один из них упал -- зависит от задачи. Например, если вы хотите получить цену одной и той же акции из нескольких источников, то даже если один из источников недоступен, вы дождетесь ответа другого источника. В случае если вы хотите получить цену разных акций из одного и того же источника, то, вероятно, имеет смысл отменить оставшиеся таски, поскольку понятно, что если источник недоступен, то остальные задачи тоже упадут.
Виртуальный выделенный сервер (VDS) становится отличным выбором
С WebControl было то же самое, пока я не вставил его на формуЯ так понимаю, что он отключен, пока не находится на форме
andreycha почему то пометил предыдущую мою тему как дубликат, хотя решения в "ориджинал" теме для своей проблемы я не нашёл, вроде бы другая ситуация,...
ЗдавствуйтеПодскажите, пожалуйста, как сделать диалоговое окно куда пользователь мог бы вводить только числа с клавиатуры?