异步和元组

Pet*_*erK 0 c# tuples async-await

我正在尝试第一次在异步函数中使用元组。测试时我无法捕捉到响应。我一直在谷歌搜索这个问题,但无法解决它。

我想运行一个返回三个字符串的异步函数。我无法收到回复。已尝试引用项目或名称。

这是代码:

var _moonAndSunResult = CleanSunAndMoonJson(_moonJson);
print(_moonAndSunResult);
Run Code Online (Sandbox Code Playgroud)

尝试以不同的方式引用 _moonAndSunResult 。

// async Task<Tuple<string, string, string, string>> CleanSunAndMoonJson(string _json)
async Task<(string, string, string, string)> CleanSunAndMoonJson(string _json)
{

    print("sunRise: " + GetCorrectTimeFormat("sunRise", _json));
    print("sunSet: " + GetCorrectTimeFormat("sunSet", _json));
    print("moonRise: " + GetCorrectTimeFormat("moonRise", _json));
    print("moonSet: " + GetCorrectTimeFormat("moonSet", _json));

    Utility.sunrise = GetCorrectTimeFormat("sunRise", _json);
    Utility.sunset = GetCorrectTimeFormat("sunSet", _json);
    Utility.moonrise = GetCorrectTimeFormat("moonRise", _json);
    Utility.moonset = GetCorrectTimeFormat("moonSet", _json);



    await Task.Yield();

    //return (firstValue, secondValue, thirdValue);

    //return new Tuple<string, string, string, string>(Utility.sunrise, Utility.sunset, Utility.moonrise, Utility.moonset);
    return (Utility.sunrise, Utility.sunset, Utility.moonrise, Utility.moonset);
    //return Tuple.Create(Utility.sunrise, Utility.sunset, Utility.moonrise, Utility.moonset);
}
Run Code Online (Sandbox Code Playgroud)

我从上面的 _moonAndSunResult 打印得到这个

System.Threading.Tasks.Task`1[System.ValueTuple`4[System.String,System.String,System.String,System.String]]
Run Code Online (Sandbox Code Playgroud)

tym*_*tam 7

@YoungDeiza 所说的(等待任务),但实际上你不需要在这里使用任务:

(string Sunrise, string Sunset, string Moonrise, string Moonset) CleanSunAndMoonJson(string _json)
{
    ...

    var sunrise = GetCorrectTimeFormat("sunRise", _json);
    var sunset = GetCorrectTimeFormat("sunSet", _json);
    var moonrise = GetCorrectTimeFormat("moonRise", _json);
    var moonset = GetCorrectTimeFormat("moonSet", _json);

    return (sunrise, sunset, moonrise, moonset);
}
Run Code Online (Sandbox Code Playgroud)

然后

var _moonAndSunResult = CleanSunAndMoonJson(_moonJson);
Run Code Online (Sandbox Code Playgroud)