我想要写下以下内容:
public string GetSomeValue()
{
//directly return the value of the Method 'DoSomeHeavyWork'...
var t = DoSomeHeavyWork();
return t.Result;
}
public Task<string> DoSomeHeavyWork()
{
return Task.Run(() => {
// do some long working progress and return a string
return "Hello World!";
});
}
正如您所看到的,为了从DoSomeHeavyWork()
返回结果,我使用了Task.Result属性,这样做是可以的,但研究表明这会阻塞线程。
我想使用async/await模式来解决这个问题,但似乎找不到如何实现。
如果按照我的当前知识使用async/await,我最终会得到以下结果:
public async Task<string> GetSomeValue()
{
//directly return the value of the Method 'DoSomeHeavyWork'...
var t = DoSomeHeavyWork();
return await t;
}
public Task<string> DoSomeHeavyWork()
{
return Task.Run(() => {
// do some long working progress and return a string
return "Hello World!";
});
}
这个解决方案并不完全符合我的需求,因为我只想返回字符串而不是一个Task<string>
,如何使用async/await实现这一点呢?
Task<string>
呢?因为当你使用await
等待它时,它会返回一个string
。这不是你想要的吗? - Enigmativity