I ran into a strange issue today at a client involving a large VB.NET project. One user on a Windows 2000 machine was having the app lockup when trying to open a SaveFileDialog. After doing some searching, I ran across a solution for C# apps where if the app was running in MTAThread model it would occur. Because WinXP supplies it's own message pump for it's Common Dialogs, but Win2000 does not, the solution was to make sure that [STAThread] was specified for the main function.
The odd thing is that VB.NET is setup to run as STAThread as default. Nevertheless, I stated explicitly in the VB app to run as [STAThread] and the issue went away. Not sure how / why the VB app got out of it's default mode, but something odd going on there that I'll have to investigate further.
So in summary if you are running a .NET app on Windows 2000 that has either:
- Common Dialogs hang when opening
- Copy / Paste throws an exception (this is the other problem I ran into)
You may want to check the apartment threading model.