具有输入参数和输出的Task.Run

Lor*_*ash 1 c# task task-parallel-library

这非常有效:

private void MainMethod()
{
    Task<bool> taskItemFound = new Task<bool>(ItemFound);
}

private bool ItemFound()
{
    //Do Work
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这有效,但是UGLY,我不能传递多个参数:

private void MainMethod()
{
    var startNew = Task<bool>.Factory.StartNew(TempMethod, "cow");
}

private bool TempMethod(object o)
{
    return ("holy " + o == "holy cow");
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个解决方案,它将Task<bool>从一个带有多个输入参数的现有方法中获得一个并返回一个bool.理想情况下,它看起来像这样:

Task<bool> taskItemFound = new Task<bool>(ItemFound(param1, param2, param3));
Run Code Online (Sandbox Code Playgroud)

Gre*_*rko 6

你可以做:

bool result = await Task.Run(() => ItemFound(param1, param2, param3) );
Run Code Online (Sandbox Code Playgroud)

或者,如果你真的想要它Task<bool>:

Task<bool> t = new Task<bool>(() => ItemFound(param1, param2, param3) );
Run Code Online (Sandbox Code Playgroud)