Async method with multiple tasks I'm trying to make my ASP.net Web API methods asynchronous.  This method is in the Business Logic layer of my N-tier. I'm waiting for the result from my 1st task and use it on the 2nd task, but I think I'm doing it in a wrong way.  Can you please give me advice or feedback regarding my code?

public async Task&lt;DTOUser&gt; CreateUser(DTORegister source)
{
    var result = new DTOUser();

    try
    {
        var user = new DTOUser()
        {
            Active = (int)defaultNumber.One,
            Deleted = (int)defaultNumber.Zero,
            DateCreated = DateTime.Now,
        };

        result = await Task.Run(() =&gt;_RepositoryUser.Add&lt;DTOUser, DTOUser&gt;(user));

        //This part is where I dont feel confident
        var login = new DTOLogin()
        {
            Email = source.Email,
            Password = source.Password,
            OwnerID = result.UserID, //using the result of my 1st task here. 
            DateCreated = DateTime.Now

        };
        //use the login object to my 2nd task
        var task2 = await Task.Run(() =&gt;_RepositoryLogIn.Add&lt;DTOLogin, DTOLogin&gt;(login));

        result.IsSuccessful = true;

    }
    catch (Exception ex)
    {
        result.ErrorMsg = "BL Error - " + ex.Message;
        result.IsSuccessful = false;
    }
    return result;
}


Both _RepositoryUser.Add and _RepositoryLogIn.Add are calling the same Generic Repository method from DAL:

public TOutPut Add&lt;TOutPut, TInput&gt;(TInput input)
        {
            var entityObj = MappingConfiguration.MapObjects&lt;TInput, TType&gt;(input); //Calling my automapper method to map my Entity object and DTO Object
            _entity.AddObject(this.GetEntitySetName(typeof(TType).Name), entityObj);
            _entity.SaveChanges();
            return MappingConfiguration.MapObjects&lt;TType, TOutPut&gt;(entityObj); 

        }
To me it seems like you are trying to make a async task for the sake of making it async to fit in with.


  I'm trying to make my ASP.net Web API methods asynchronous


I don't see any reason for these pieces of code to be async.  They aren't doing long running tasks and aren't even hitting the db (unless Add doesn't something we don't know about of course like saves as well which is a different point of review right there).

result = await Task.Run(() =&gt;_RepositoryUser.Add&lt;DTOUser, DTOUser&gt;(user));

//use the login object to my 2nd task
var task2 = await Task.Run(() =&gt;_RepositoryLogIn.Add&lt;DTOLogin, DTOLogin&gt;(login));


Once you have removed these, the method becomes a truly synchronous method.  As it's a pretty trivial method anyway this shouldn't be a problem and making it async only confuses the issue for no benefit.