В вашем примере вам не нужно ничего делать с ответом. В результате вместо того, чтобы пытаться вернуть значение из вашего CompletedDownload
метода, вы можете обработать свое действие и просто нарушить свой l oop, если условие выполнено.
public void LoadProcedure(int n, Action<int> inAction)
{
// LoadingDisplay loadingDisplay=new LoadingDisplay(n);
for (int i = 0; i <= n; i++)
{
if (i == n / 4)
{
inAction(i);
break;
}
}
}
Это запустит ваш action, выйдите из l oop и вернитесь к вызывающему методу.
Если вам абсолютно необходимо вернуть входную переменную, вызвавшую действие, просто измените тип возврата LoadProcedure
с void на int и возвращает результат.
var result = loading.LoadProcedure(100,display.CompletedDownLoad);
public int LoadProcedure(int n, Action<int> inAction)
{
// LoadingDisplay loadingDisplay=new LoadingDisplay(n);
for (int i = 0; i <= n; i++)
{
if (i == n / 4)
{
inAction(i);
return i;
}
}
}
Нет необходимости изменять inAction
на Func<>
, поскольку в настоящее время вы не выполняете никаких вычислений в inAction.