就是在Web Service程式碼中雖然有用Try...Catch保護
但是卻沒將錯誤資訊記錄下來
所以導致在Server端發生錯誤,但卻感覺什麼事情都沒發生的情況
想到的解決方法是
1.將錯誤寫一個Txt檔案。
2.將錯誤寫進Event View裡。
我選擇第一個方式寫一個Txt檔案
我不曉得是否會發生程式同時寫入同一個檔案的問題
想到之前有聽到這個類別ReaderWriterLock
一直沒有去實際嘗試看看,所以趁這個機會來嘗試一下
首先我建立了兩個Thread
Thread myThread1 = new Thread(new ThreadStart(WriteA));
Thread myThread2 = new Thread(new ThreadStart(WriteB));
myThread1.Start();
myThread2.Start();
模擬不同使用者在同一時間
寫入相同檔案的狀況。。。
private void WriteA()
{
rwLock.AcquireWriterLock(10000);
using (FileStream fs = new FileStream(@"C:\ReaderWriterLock.txt", FileMode.Append, FileAccess.Write))
{
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("A:" + DateTime.Now.ToString());
sw.WriteLine();
sw.Close();
DelegateChangeLabel dclDelegate = new DelegateChangeLabel(ChangeLabelA);
label1.BeginInvoke(dclDelegate);
Thread.Sleep(5000);
}
rwLock.ReleaseWriterLock();
}
private void WriteB()
{
rwLock.AcquireWriterLock(10000);
using (FileStream fs = new FileStream(@"C:\testReaderWriterLock.txt",FileMode.Append,FileAccess.Write))
{
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine("B:" + DateTime.Now.ToString());
DelegateChangeLabel dclDelegate = new DelegateChangeLabel(ChangeLabelB);
label1.BeginInvoke(dclDelegate);
sw.WriteLine();
sw.Close();
}
rwLock.ReleaseWriterLock();
}
rwLock是ReaderWriterLock物件
我利用ReaderWriterLock物件的AcquireWriterLock方法
去鎖定寫入檔案動作,直到ReleaseWriterLock方法
去釋放鎖定。。。
簡單的測試。。小小心得紀錄。
沒有留言:
張貼留言