leitura e gravação simultânea de um arquivo em C #

Eu tenho um arquivo contendo dados nos quais eu gostaria de monitorar as alterações e também adicionar as minhas. Pense como "Tail -f foo.txt".

Baseado emesta discussão, parece que eu deveria apenas criar um fluxo de arquivos e transmiti-lo a um escritor e a um leitor. No entanto, quando o leitor chega ao final do arquivo original, ele falha ao ver as atualizações que eu mesmo escrevi.

Eu sei que parece uma situação estranha ... é mais um experimento para ver se isso pode ser feito.

Aqui está o exemplo de caso que tentei:

foo.txt:
a
b
c
d
e
f

        string test = "foo.txt";
        System.IO.FileStream fs = new System.IO.FileStream(test, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite);

        var sw = new System.IO.StreamWriter(fs);
        var sr = new System.IO.StreamReader(fs);

        var res = sr.ReadLine();
        res = sr.ReadLine();
        sw.WriteLine("g");
        sw.Flush();
        res = sr.ReadLine();
        res = sr.ReadLine();
        sw.WriteLine("h");
        sw.Flush();
        sw.WriteLine("i");
        sw.Flush();
        sw.WriteLine("j");
        sw.Flush();
        sw.WriteLine("k");
        sw.Flush();
        res = sr.ReadLine();
        res = sr.ReadLine();
        res = sr.ReadLine();
        res = sr.ReadLine();
        res = sr.ReadLine();
        res = sr.ReadLine();

Depois de passar por "f", o leitor retorna nulo.

questionAnswers(5)

yourAnswerToTheQuestion