你的第一个问题,不知道你有曾经优化win98 winxp的经验没,除了服务器版,操作系统默认都是优化前台程序,所以,如果你想让 background task 得到更多的 cpu 时间,那你需要修改操作系统的优化选项。
提高应用程序运行效率,主要还是从你的逻辑入手,把复杂任务拆分开来,能够利用IOCP的地方就用IOCP,在多CPU或多核机器上,按照核心数把任务分解到每个单独的核心上去执行。
说的是多线程吧,winform多线程是必须的,优化代码对应优化逻辑。
我觉得一般来说不是这样。
一般客户端程序使用backgroundworker都是为了不阻塞界面线程的运行,虽然理论来说多线程提高了性能,但实际这种情况下的设计并不是考虑性能的。基本上用backgroundworker都是要把事件传送回来的。
假如你是服务器端的程序,你可以能是performance critical的,这个时候你可能要自己设计线程池,最简单的方法就是异步委派asynch delegate。但实际情况比这个复杂的多,thread的话题可以很深,涉及到线程复用以及分布式等等。
另外.net 4里引入了parallel programing,方便利用多个cpu计算。
一般来说如果是桌面程序你不用考虑线程的性能,更多关注代码的优化。
看 CLR via C#(第3版) 讲的都是.net 框架的原理、对写出高效率代码很有帮助
VS 的 Team 版本有Test 功能,可以做性能测试,跟踪程序哪个地方运行耗时。