公司要求我写一个winform的程序,要同时从两个站点上下载文件,所以我把和下载相关的所有内容写到一个类里,稍做修改就成了两个类,在类的构造函数里把主窗口的文本框做为参数传给类,用来实时显示下载结果.
    目前的问题是,我先启动了一个类实例,开始运行它的下载函数,下载第一个网站,这可从主窗口的文本框里看出来,这时再启动另一个类,第二个类的下载也开始运行了,这也可以从文本框里看出来,但是第一个类的函数就再也没反应了,设断点看第一个类的程序也是不再向下运行了,文本框里始终只有第二个类在下载第二个网站的内容,请问象这种情况有谁遇到过吗,有人知道怎么解决吗
    这两个类的代码几乎全部一样,因为本来就是用一个类改写出来的。类里面的变量名和函数名也基本上是一样的,按说这不应该会有问题,不过我还是尽可能说得详细些吧。
    下面是类的简要结构,实际代码没法贴上来,将近三千行呢主窗口文件:MainForm.cs
//运行第1个类的实例下载第1个网站
button1_click()
{
class1 myClass = new class1(textBox1)
myClass.download();
}
//运行第2个类的实例下载第2个网站
button2_click()
{
class2 myClass = new class2(textBox1)
myClass.download();
//点完这个按钮开始第2个类实例的运行后,第1个类实例下的函数就没反应了
}第一个类文件:class1.cs
class1
{
   public class1(textBox)
   {
       第1个类的构造函数;
   }
   public void download()
   {
       开始下载第1个网站的文件;
       向线程池添加回调函数监视是否下载完;
   }
   private void DBoperation()
   {
       向数据库里写入下载信息;
   }
}第2个类文件:class2.cs
class2
{
   public class2(textBox)
   {
       第2个类的构造函数;
   }
   private void download()
   {
       开始下载第2个网站的文件;
       向线程池添加回调函数监视是否下载完;
   }
   private void DBoperation()
   {
       向数据库里写入下载信息;
   }
}

解决方案 »

  1.   

    你都显示到textbox1里面,当然只会显示一个
      

  2.   

    噢,这个我知道,我并不是全靠textbox1,我主要是靠断点来判断的,如果两个类里的函数同时运行,应该会是交错地中断,而不是始终只有一个类的函数在运行。另外我的程序也有日志,如果两个类都起作用,应该会有两个日志文件,而不是始终只有一个。
      

  3.   

    1、没看到你开线程,也没看到异步。
    2、class1和class2看上去是一模一样的……