0

ファイルが更新されているかどうか、つまりブラウザによってファイルに Cookie が設定されているかどうかを確認するために、ファイルを継続的にポーリングしています。アプリケーションを実行していない場合、ブラウザは Cookie の値を設定しますが、アプリケーションを実行している場合、ファイルに書き込むことができません。同時に書き込むことができるようにファイルを読み取る方法はありますか? 以下は私が使用しているコードです: -

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create a timer that polls once every 5 seconds
            var timer = new System.Threading.Timer(TimerProc, null, 5000, 5000);
            Console.WriteLine("Polling every 5 seconds.");
            Console.WriteLine("Press Enter when done:");
            Console.ReadLine();
            timer.Dispose();
        }

        static int TickCount = 0;
        static void TimerProc(object state)
        {
            ++TickCount;
            Boolean found = false;
            Console.WriteLine("tick {0}", TickCount);
            string curFile = @"C:\Users\ACP\AppData\Local\ETH Zuerich\xul_seb\Profiles\cookies.sqlite-wal";
            string line;
            Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
            //Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");
            StreamReader file = new StreamReader(curFile);
            while ((line = file.ReadLine()) != null)
            {
                if (line.Contains("SEB"))
                {
                    found=true;
                }
            }
            if (found)
            {
                Console.WriteLine("String exists in the file.");
            }
            else
            {
                Console.WriteLine("String does not exist in the file.");
            }
            file.Close();
        }
    }
}
4

1 に答える 1

0

FileStreamロックせずに読み取りモードで作成します。

var file = new FileStream(curFile, FileMode.Open, 
                          FileAccess.Read, FileShare.ReadWrite);
于 2012-11-19T07:10:54.030 に答える