2017-05-17 63 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