System.Threading.Thread t=new System.Threading.Thread(new System.Threading.ThreadStart(Funcl));
t.Start();
在函数Funcl中按常规处理进度条就行了.注意Funcl()函数不可以带参数

解决方案 »

  1.   

    基本同意dwg_cn(温暖的左手)的做法,但是在Func1中不能直接控制进度条,需要用MethodInvoker来做。
      

  2.   

    实际上我自己已经解决了,要用到两个子线程,主线程按顺序:启动子线程ThreadFunc1(该子线程执行Func1)--显示带有进度条的对话框(dialog.ShowDialog),在该对话框中再启动另一子线程ThreadProgress(该子线程执行一处理进度条的函数,函数中用一循环逐步增加进度条的值,当然其中还加入了一定的延迟,否则ThreadFunc1还未返回进度条就走完了全程).
    在Func1执行完以后,ThreadFunc1会通知dialog,dialog进而终止其子线程ThreadProgress,并将进度条剩余的值增加完,在用户看来,进度条的前大半段是逐步增加的,到最后有一小段是飞快第"跑"到底的.
    上述方法看上去有些复杂,但可能必须这样,因为在处理进度条时,牵涉到一个dialog自己不知道什么时候要终止的while循环(必须靠ThreadFunc1来通知它终止),而该循环会一直占用CPU时间,这样其他线程就没机会执行了,所以要把它在放入另一线程内.