小编Rau*_*wal的帖子

C#中的Async/await vs Task.Run

我刚接触这个异步的东西.
请忍受我缺乏的知识.

  1. 据说当一个方法遇到等待时......" 它告诉等待它在完成时运行方法的其余部分,然后从异步方法返回. "
    我没有得到这个部分.
    那么这是否意味着该方法仍然保持同步运行并等待直到等待返回,然后继续该方法的其余部分?
    如果没有请解释那么为什么Task.Run需要在后台运行方法或以火灾和忘记方式运行.我仍然可以通过等待来实现吗?即
    该方法继续执行其余的语句,而不等待await返回.
    我希望这与后台运行方法类似.或者不是吗?我很迷惑.

  2. 如果一个方法用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)

.net c# multithreading asynchronous

5
推荐指数
1
解决办法
2505
查看次数

标签 统计

.net ×1

asynchronous ×1

c# ×1

multithreading ×1