我正在使用 C# .Net4.0 在 Visual Studio 2010 中构建一个程序
我有一个接收 url 并尝试获得响应的函数。在函数内部,我写入一个说明成功和错误的日志文件。
public void getResponse(string url, System.IO.StreamWriter writer)
{
try
{
WebRequest request = WebRequest.Create(url);
WebResponse response = request.GetResponse();
// Display the status.
Console.WriteLine(response.Headers);
writeToLog("Success: " + url, writer);
}
catch (WebException ex)
{
writeToLog("Error: " + ex.message, writer);
}
}
我有一个 url 列表,我使用 Parallel.ForEach 一次运行多个 url。
System.IO.StreamWriter writer = new System.IO.StreamWriter("program.log", true);
string[] urls = {url1, url2, url3, url4, etc}; //have around 30 urls
Parallel.ForEach(urls, url => getResponse(url, writer));
当我运行该程序时,有时我会收到一条错误消息,指出另一个程序正在使用 program.log。这不会一直发生,但有时会发生,程序会崩溃。
问题:我应该怎么做才能避免这个错误?或者,有没有其他方法可以做到这一点?