我用多线程处理业务请求,想把每个请求的返回数据都记录到一个文本文件(日志)里,可是
总是报有进程打开此文件,结果写不进去,各位高手一般是怎么处理这种问题的?

解决方案 »

  1.   

    public int totalsnum =0;
    ...
    private void button1_Click(object sender, System.EventArgs e)
    {
    testthread();
    } public void ThreadProc() 
    {
            while (totalsnum<50)
    {
        Interlocked.Increment(ref totalsnum); 
    multconn(totalsnum-1);
            Thread.Sleep(0);
    }
    } private void testthread()
    {
    Thread t1=new Thread(new ThreadStart(ThreadProc));
    Thread t2=new Thread(new ThreadStart(ThreadProc));
        t1.Name="thread1";
        t2.Name="thread2";
    t1.Start();
    t2.Start();
    } private void multconn(int i)
    {
    StreamWriter sr =new StreamWriter(@"c:\temp\dai.txt",true);  
                     r=sendreq();  //发送请求并取得结果;
            sr.WriteLine("r"); 
                      }
      

  2.   

    sample code as follows:private Mutex mWriter = null;
    private void multconn(int i)
    {
        if( mWriter == null ) mWriter = new Mutex();
        mWriter.WaitOne();//Get mutex to write log file
        try
        {
             StreamWriter sr =new StreamWriter(@"c:\temp\dai.txt",true);
             r=sendreq(); //发送请求并取得结果;
             sr.WriteLine("r");
             sr.Flush();
             sr.Close();
         }
         catch{ }
         mWriter.ReleaseMutex();//Release mutex after writing
    }
      

  3.   

    正如上面,你要关闭释放对象
             sr.Flush();
             sr.Close();
      

  4.   

    感谢Knight94(愚翁),也感谢GXY2005,
    我多年未写程序了,C#也是刚接触,以后还要多麻烦。
    还有我的.net的msdn总是查找不到有用处的内容,比如我输入查找ReleaseMutex,Thread或者选择关键字按F1都不能命中帮助,请问是我的msdn安装有问题吗?还是.net的msdn就这样?
    我msdn是三张碟完全安装的,放在d:\msdn目录,总共约1.67G,请指教。