在异步任务<enum>中返回枚举并获取值

时间:2017-05-17 21:40:59

标签: c# reflection enums async-await task

我希望根据异步方法的结果返回一个枚举。

public enum ReponseType
{
    Success,
    Error
}

以下是返回响应类型的方法:

    public async Task<ReponseType> MethodThatDoesStuff()
    {
        await Task.Run(() =>
        {
            //Doing stuff here

            return ResponseType.Success;

        });
        return ReponseType.Error;
    }

当我调用此方法时,我无法访问该值的内容:

var resp = await _writer.MethodThatDoesStuff();

即使我使用:

ResponseType resp = await _writer.MethodThatDoesStuff();

我仍然无法获得枚举值。

resp。[intellisense]只给我GetType(),GetTypeCode(),CompareTo()等......

如果我只想知道它是成功还是错误,返回这样的枚举是不是没有问题/效率?

最好的方法是什么?

由于

1 个答案:

答案 0 :(得分:2)

返回枚举完全没问题。但是,在这种情况下,您的值始终为Error,因为您没有从Run中返回值。您应该执行以下操作:

String

使用此功能,你应该可以这样调用方法

public Task<ReponseType> MethodThatDoesStuff()
{
    return Task.Run(() =>
    {
        //Doing stuff here

        return ReponseType.Success;
    });
}