日期:2014-05-19  浏览次数:21233 次

多线程的简单问题,但是我不懂怎么弄......
第一次用多线程写程序,不太懂怎么跳来跳去,winform


是这样,主线程mainthread上比如有10个操作,每个操作都会生成一个后台进程bgpro做相应的比较耗时的处理,如果我自动让主线程上这10个操作顺序做下去,后台的线程如果不是按顺序结束的话,就会出问题,比如争用资源或者冲突.

我后来在每个操作建立新线程的同时bgpro.join()了一下,后台操作是不会争资源了,但是主界面就跟程序死了一样没有反映了.

希望的效果是在后台线程执行的时候,主线程会等待后台线程结束后再继续,同时界面不能假死啊......

最后问个问题,如何设置和得到当前线程的名称???

------解决方案--------------------
在主界面上要异步调用执行时间长的方法. 比如用线程去调用那些占用时间很长的方法.

窗体假死是因为它在等待所有方法的执行.
------解决方案--------------------
private delegate void beginInvokeDelegate();
private void beginInvokeMethod(){
//数据绑定到控件上
}
private delegate void delegate1;
private void StartMethod(){
//从远程取数据,耗费时间比较长的操作
this.Invoke(new delegate1(beginInvokeMethod));
}
private void but_click(....){
Thread thread = new Thread(new ThreadStart(StartMethod));
thread.Start();
}