Tôi muốn viết như sau:Nhiệm vụ giá trị trả về, mà không tác <T> (async/chờ đợi mẫu)
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!";
});
}
Như bạn có thể nhìn thấy trở lại kết quả từ DoSomeHeavyWork()
Tôi đã sử dụng tài sản Task.Result , hoạt động tốt, nhưng theo các nghiên cứu, điều này sẽ chặn Chủ đề.
Tôi muốn sử dụng mẫu async/await cho điều này nhưng không thể dường như tìm cách thực hiện việc này. Nếu tôi đã làm như vậy với async/chờ đợi với kiến thức hiện tại của tôi, tôi sẽ luôn luôn kết thúc với điều này:
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!";
});
}
Giải pháp này doesnt khá phù hợp với nhu cầu của tôi bởi vì tôi muốn trở lại CHỈ chuỗi và không phải là một Task<string>
, làm thế nào điều này có thể đạt được với async/await?
Tại sao bạn không thể trở về 'Nhiệm vụ' bởi vì khi bạn 'await' nó nó trả về một' chuỗi'. Đó không phải là những gì bạn muốn? –
Enigmativity