我正在編寫一個應用程序,其中一個其他窗體應用程序將寫入該文件,然後我的文件將讀取該文件並執行一些需要約2小時的時間的任務。所以我想實現線程化,以便每當文件長度變得大於零時,我的應用程序應該啓動一個線程,然後主線程應該開始查找文件大小,並且如果文件的某個時間長度再次變得大於零,那麼主線程應該單獨的線程。一旦任務完成後,所有的應該停止。多線程和C#異常。文件正在被另一個進程使用
請建議我如何才能做到這一點,也有如下的我的代碼來看看:
的窗口形式的應用程序代碼:
const string [email protected]"C:\Users\abc\Documents\input.txt";
try {
using (FileStream fs = File.Open(inputfile, FileMode.Open))
{
using (StreamWriter writer = new StreamWriter(fs))
{
writer.Write(textBox1.Text);
button1.Enabled = false;
writer.Close();
fs.Close();
}
}
}
catch(Exception ex)
{
MessageBox.Show("File is locked by some process try again");
Thread.Sleep(10*1000);
Application.Exit();
}
我的應用程序代碼:
static void Main(string[] args)
{
while(true)
{
FileInfo fi = new FileInfo(inputfile);
if(fi.Length>0)
{
Thread th1=new Thread(new ThreadStart(ThreadingTest.runCommand));
th1.Start();
if(Variable.stop)
th1.Abort();
}
else
{
Console.WriteLine("File.Empty");
Thread.Sleep(30 * 1000);
}
}
當我運行我的應用程序時,我得到一個異常「C#異常。文件正在被另一個進程使用」請提出一些關於我的方法的有用的觀點。
您可以使用其他文件進行同步。例如,創建一個文件「我的更新完成」,當它被創建時,其他進程可以嘗試讀取原始文件。之後,它可以刪除同步文件以通知其他進程。 – Eser