似乎在 Blazor 服务器应用程序中,我们鼓励尽可能使用异步,我通常理解原因。也就是说 - 请有人好心地解释一下使用异步函数时的一般期望并为我填写一些缺失的知识 - 我对所有的信息感到困惑,需要一些针对我正在做的事情的具体信息,以帮助我理解。
我试图尽可能坚持使用异步,并且在大多数情况下这样做相当容易,但是在调用某些函数时,使它们异步似乎有点矫枉过正(或者是吗?)。在下面的示例中 - 从异步函数内调用非异步“ValidateEvent”函数。
所以我的问题是......我应该:
a)从异步函数中正常调用它(这似乎违背了异步的要点),例如:“varvalidationResult = ValidateEvent(objDto);”?
b)使用 Task.Run 调用它,例如:“await Task.Run(() =>ValidateEvent(objDto));”?
c)将这个简单的 IF/ELSE 方法转换为异步函数?
预先感谢您的任何帮助/建议。
//example async function, that itself calls the other non-async function.
public async Task<Response> AddAsync(ObjDto objDto)
{
// a) Call it normally?
var validationResult = ValidateEvent(objDto);
// b) Calling it using Task.Run?
var validationResult = await Task.Run(() =>ValidateEvent(objDto));
//Do stuff asynchronously here
...
await _db.AddAsync(objDto);
await _db.SaveChangesAsync();
...
}
Run Code Online (Sandbox Code Playgroud)
验证函数:
c) 我真的应该将其转换为异步吗,因为它只是一系列“IF 和 ELSE”(异步转换见下文)
//Non-Async …Run Code Online (Sandbox Code Playgroud)