Как возможно, что этот код
TaskManager.RunSynchronously<MyObject>(fileMananager.BackupItems, package);
вызывает ошибку компиляции
The call is ambiguous between the following methods or properties:
'TaskManager.RunSynchronously<MyObject>(System.Action<MyObject>, MyObject)' and
'TaskManager.RunSynchronously<MyObject>(System.Func<MyObject, bool>, MyObject)'
когда подпись действия
public void BackupItems(MyObject package)
и "неоднозначные" методы
static class TaskManager
{
public static void RunSynchronously<TInput>(Action<TInput> task, TInput param)
{
Task.Factory.StartNew(() => task(param));
}
public static bool RunSynchronously<TInput>(Func<TInput, bool> task, TInput param)
{
return Task.Factory.StartNew(() => task(param)).Result;
}
}
Мне кажется, что между этими методами существует большая разница. Что мне здесь не хватает?
EDIT:
Помимо принятого ответа, я просто встретил решение по аналогичному вопросу. Вот ссылка .