2016年3月25日 星期五

【WCF】The 'await' operator can only be used within an async method.

在嘗試用 WCF 內建的 Async 方法時卡在
The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task<?>'.
'await' 運算子只能在非同步方法使用。請考慮以 'async' 修飾詞標記此方法...


其實它講得很明白了,只是不熟一時想不通
public void Foo()
{    
    try
    {
        var ret = await _service.RemoteMethodAsync();
    }
    catch (Exception ex)
    {
        string exMsg = ex.Message;        
    }    
}
中因為調用 RemoteMethodAsync 並希望使用 await 讓主緒不要 hold 住,但是如果要用 await,void 前應加上 async,所以是

public async void Foo()
{    
    try
    {
        var ret = await _service.RemoteMethodAsync();
    }
    catch (Exception ex)
    {
        string exMsg = ex.Message;        
    }    
}
就這麼簡單而已,我想大概大部分的人在這邊都沒卡住,中文資訊找不到這個錯(哈)。

ref: MSDN discuz

沒有留言:

張貼留言