У меня есть программа, которая записывает логирование как текстовый файл.
namespace logging
{
using System;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
public class log
{
private static string lpath;
[DllImport("kernel32")]
private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
public static void Info(string user, string info, string txt)
{
StreamWriter writer;
string str = Assembly.GetExecutingAssembly().GetName().CodeBase.ToString();
.....
if (!File.Exists(path))
{
writer = new StreamWriter(path, true);
writer.WriteLine(str3 + " " + info + " => " + txt);
writer.Flush();
writer.Close();
}
else
{
writer = File.AppendText(path);
writer.Write(str3 + " " + info + " => " + txt + "\n");
writer.Flush();
writer.Close();
}
}
}
}
Тогда у меня есть функция.
private void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Thread thread_BP_Print = new Thread(BoardingPass_Print);
thread_BP_Print.Start();
// Simultaneously, do something on the main thread.
BaggageTag_Print();
bgw.RunWorkerAsync();
}
Две внутренние функции (BoardingPass_Print()
и BaggageTag_Print()
) вызывают одну и ту же функцию регистрации.
logging.log.Info(username, "Query Trace > ", sql);
Из-за методов вызова потоков, я думаю, что я сталкиваюсь с ошибкой:
Процесс не может получить доступ к файлу 'C: \ Folder \ 2012-01-17-Name.txt', поскольку он используется другим процессом.
Может ли кто-нибудь дать мне лучшее решение для взаимодействия с потоком и входа в текстовый файл, не сталкиваясь с таким сообщением об ошибке, как это?
Каждое предложение будет по-настоящему оценено.