2016-08-08 3 views
0

Здравствуйте, у меня есть файл cvs, который читается, а вызовы и API для получения информации, а затем записываются в файл, как показано ниже. В настоящее время существует только один класс с разделительной записью.Запись из двух движков в один файл

 public class EE 
     { 
      [FieldOrder(1)] 
      public string Name; 
      [FieldOrder(2)] 
      public string Description; 
      [FieldOrder(3)] 
     } 


....creating engine.... 

    using (enginev2.BeginWriteFile(@"C:\Update\" + fileName)) 
       { 
        foreach (EEEEoutput in arrayEmployees) 
        { 
         enginev2.WriteNext(EEoutput); 
        } 

      } 

Теперь я должен создать другие разделители записи как она имеет другую структуру, но мне нужно, чтобы написать в тот же файл. Это означает, что два разных файловых сервера записывают один за другим в один и тот же файл. Это возможно?

Я упростил количество полей для примера. Они оба очень разные и имеют много полей.

public class EETravel 
     { 
      [FieldOrder(1)] 
      public string TrxType; 
      [FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.AllowForRead)] 
      [FieldOrder(2)] 
      public string EmployeeID; 
    } 

    using (engineTravel.BeginWriteFile(@"C:\Update\" + fileName)) 
       { 
        foreach (Employees_Travel EEtravel in arrayTravel) 
        { 
         engineTravel.WriteNext(EEtravel); 
        } 

       } 

, когда у меня есть код выше, он полностью переезжает, что написал первый движок. Так что мой вопрос: как мне заставить второй движок забирать, где остановился первый движок, а затем обновить файл?

спасибо

+1

Во-первых, если это многопоточный код, вы захотите сделать некоторую блокировку вокруг записи. Во-вторых, откройте файл для добавления. В-третьих, найдите до конца файла перед записью, чтобы поддерживать обновления другого кода. – GreatAndPowerfulOz

+0

спасибо Я использовал BeginAppendToFile, и это сработало. – PanzerRage

ответ

1
using (engineTravel.BeginAppendToFile(@"C:\Update\" + fileName)) 
       { 
        foreach (EETravel EEtravel in arrayTravel) 
        { 
         engineTravel.WriteNext(EEtravel); 
        } 

       } 

используется .BeginAppendToFile во втором двигателе, и он взял, когда другой двигатель кончил.