Place asparagus in a large saucepan with enough water to cover; cook until crisp-tender. Drain and set aside.
In a large heavy saucepan, saute carrot in butter for 3-5 minutes; add onions and saute 2 minutes longer or until tender. Stir in flour; gradually add milk. Bring to a boil; boil and stir for 2 minutes. Add broth, ham, mushrooms and reserved asparagus. Reduce heat; add cream. Heat through but do not boil. Add salt and pepper. Garnish with Parmesan cheese and parsley if desired.