私は知っています、この質問はすでに多くの場所で繰り返し尋ねられています. しかし、私はそれをグーグルで検索し、このサイトで解決策を確認しようとしましたが、まだ不足しています. 提案された解決策をすべて使用した後でも、まだこの問題が発生しています。
基本的に、私は2つの別々のプログラムを持っています。各プログラムの機能は以下のようなものです。
- ProgramA - 機能: ソースファイル(txt)に常に更新
- ProgramB * - 機能: ソース ファイルをコピー先の場所に常にコピーします。
ProgramB では、ctrl+c 操作をシミュレートしたいと思います。したがって、ファイルを更新してオペレーターがコピーできる場所をアーカイブしようとしています。
これが私がこれまでに試したことです。以下は、機能をテストするためのサンプル プログラムです。
プログラムA
static void Main(string[] args)
{
// just prepare the data
List<string> tempList = new List<string>();
for(int i = 0; i < 50000; i++)
{
tempList.Add(string.Format("xxx_{0}", i.ToString()));
}
try
{
// just to simulate constart update
for (int j = 0; j < 20000; j++)
{
using (FileStream file = new FileStream(tmpFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
{
using (StreamWriter sw = new StreamWriter(file))
{
foreach (string tmpName in tempList)
{
sw.WriteLine(tmpName);
}
sw.Close();
}
file.Close();
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
Console.ReadKey();
}
}
プログラムB
static void Main(string[] args)
{
string source = @"C:\temp\test.txt";
string dest = @"C:\temp\dest\test.txt";
while (true)
{
try
{
File.Copy(source, dest, true);
}
catch (Exception ex)
{
Console.WriteLine(ex);
Console.ReadKey();
}
}
}