2017-05-17 56 views
-4

我期待根据异步方法的结果返回一个枚举。在异步任务<Enum>中返回Enum并获取值

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(); 

我还是可以' t获取枚举值。

RESP。[智能感知]只给我的GetType(),GetTypeCode()的CompareTo()等等......

难道不正常/有效返回一个枚举这样的,如果我只是想知道,如果它的成功还是错误?

这样做的最好方法是什么?

谢谢

+0

@ScottChamberlain问题是不是说,结果始终是一个错误,问题是说结果根本无法使用。 – Servy

+3

此问题尚未完成。提供可用于重现问题的[mcve]。 – Nkosi

+0

你期待在IntelliSense中看到什么? 你正在返回一个枚举,去比较另一个: if(ResponseType.Success == resp) // success else // error –

回答

2

返回枚举是非常好的。但是,在这种情况下,您的值将始终为“错误”,因为您没有从Run中返回值。你应该做以下几点:

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

     return ReponseType.Success; 
    }); 
} 

使用这个你应该能够调用的方法,这样

ResponseType response = await MethodThatDoesStuff(); 
+0

好的,谢谢。是的,只是测试了响应,它包含了这个值。通过智能感知认为这不是可用的,尽管我是这样想的。谢谢你的帮助。 – thegunner