In a saucepan over medium heat, melt the butter.
Add the flour and whisk constantly to form a roux. Cook for a minute or two until the roux is lightly golden.
Gradually whisk in the milk to the roux, ensuring there are no lumps. Continue whisking until the mixture thickens.
Reduce the heat to low, and add the shredded Gruyère or Swiss cheese to the sauce. Stir until the cheese is melted and the sauce is smooth.
Season the sauce with salt and pepper to taste.
Add the grated Parmesan cheese and continue stirring until it is fully melted and incorporated into the sauce.
Stir in the sautéed mushrooms, ensuring they are evenly distributed in the sauce. Cook for an additional 2-3 minutes to heat the mushrooms through.
If desired, garnish the sauce with chopped fresh parsley.