现在我开了10个线程收集数据。当收集成功后调用一个 write() 方法专门用于往一个 1.txt文件写入数据。
问题如下:这个 write() 方法该怎么写以保证能正确依次地向1.txt 写入数据呢
能给出例子代码吗

解决方案 »

  1.   

    加锁,lock ,monitor等,看帮助static object obj = new object();private vode write()
    {
    lock(obj)
    {
    //这里写代码
    }
    }
      

  2.   

    static CurrentUser currentUser = null;
    static readonly object lockHelp = new object();
    public static CurrentUser Instance
            {
                get
                {
                    if (currentUser == null)
                    {
                        lock (lockHelp)
                        {
                            if (currentUser == null)
                                currentUser = new CurrentUser();
                        }
                    }                return currentUser;
                }
            }
      

  3.   

    static CurrentUser currentUser = null;
    static readonly object lockHelp = new object();
    public static CurrentUser Instance
            {
                get
                {
                    if (currentUser == null)
                    {
                        lock (lockHelp)
                        {
                            if (currentUser == null)
                                currentUser = new CurrentUser();
                        }
                    }                return currentUser;
                }
            }
      

  4.   

    10个线程在收集数据,不是每个线程都写入的,就是收得到数据的线程才写入收不到的就不写入。
    现在我已经加 lock了, 但是发现会经常有重复性的写入,不知道怎么回事,麻烦高手看下。
    我在主线程开了10个线程用这个 GetInfo 方法
    private void GetInfo(object a)
            {
                //上边还有份代码太长就不写了              //收集不到数据就退出
                if(html.Contains("message error"))
                {
                     
                  textBox1.Text += "Not Found Data!\r\n";               
                  return;  //收集不到就退
                }
                //收集到就写入
                lock (obj)
                {
       
                  StreamWriter sw = new StreamWriter(myPath, true, System.Text.Encoding.UTF8);
                  sw.WriteLine("<tr>");
                  foreach (string s in listInfo)
                  {
                     sw.WriteLine("<td>" + s + "</td>");
                   }
                   sw.WriteLine("</tr>");
                   sw.Flush();
                   sw.Close();
                 }
            }问题经常发现写入了重复的数据。不知怎么回事。我已确定每个线程处理的数据是不相同的。可是最后发现却经常写入重复的数据。
      

  5.   

    是静态啊,  static object obj = new object();
      

  6.   

    何必呢
    十个线程  十个txt1.txt   ~10.txt又安全 又有顺序