Place asparagus in a saucepan with enough water to cover; cook until crisp-tender.
Drain and set aside.
In a 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.