我刚接触这个异步的东西.
请忍受我缺乏的知识.
据说当一个方法遇到等待时......" 它告诉等待它在完成时运行方法的其余部分,然后从异步方法返回. "
我没有得到这个部分.
那么这是否意味着该方法仍然保持同步运行并等待直到等待返回,然后继续该方法的其余部分?
如果没有请解释那么为什么Task.Run需要在后台运行方法或以火灾和忘记方式运行.我仍然可以通过等待来实现吗?即
该方法继续执行其余的语句,而不等待await返回.
我希望这与后台运行方法类似.或者不是吗?我很迷惑.
如果一个方法用async和await标记,然后又在一个单独的层中异步调用另一个方法,该层也标记为async和await ..
那么第一个用async和await标记的方法的调用是如何调用的名称ABC应该是什么样的?
我不想将该方法注释为async/await.所以
Task.Run(() => DoWork());
Run Code Online (Sandbox Code Playgroud)
来自ABC()没有标记为async/await?
还是它违背了异步原则?
这是我想要实现的......
public IList<CreateCaseOutput> ABC(CreateCaseInput CreateCaseInput,SaveCaseSearchInput SaveCaseSearchInput)
{
CaseSQL.getABCParameters(CreateCaseInput, RequestType, out strSPQuery, out listParam);
var AcctLst = rep.ExecuteStoredProcedure<CreateCaseOutput>(strSPQuery, listParam).ToList();
if (!string.IsNullOrEmpty(AcctLst.ElementAt(0).o_case_seq.ToString()))
{
Task.Run(async () =>
{
await DEF(SaveCaseSearchInput, AcctLst.ElementAt(0).o_case_seq);
}).ConfigureAwait(false);
}
console.writeLine("After Async called");
return AcctLst;
}
public async Task<SaveCaseSearchOutput>> DEF(SaveCaseSearchInput SaveCaseSearchInput,Int64? case_key)
{
CaseSQL.getDEFParameters(SaveCaseSearchInput, case_key, out strSPQuery, out listParam);
var AcctLst = await …Run Code Online (Sandbox Code Playgroud)