2014-09-01 1 views
0

나는 수백 개의 작은 파일을 가져 와서 임시 DataTable에 넣은 다음 그 데이터를 단일 StreamWriter. 그건 잘 작동합니다.C# 콘솔에 "..."이 표시되는 것을 멈추는 방법 StreamWriter가 DataTable에서 많은 양의 데이터를 복사하는 동안

그러나 콘솔 출력은 StreamWriter 복사 프로세스 중에 계속해서 "..."을 추가합니다. 이는 약간 짜증나게합니다.

이 기능을 끄거나 깜박 거리는 "."로 빨기 만하면됩니다. 여기

은 코드의 삭감 버전이 사용되고 :

Console Output

어떤 아이디어 :

  Console.WriteLine("Writing to TA_{0}", fileType); 
      var streamMaster = new StreamWriter(Settings.WorkingDirectory + "TA_" + fileType, true); 
      streamMaster.Flush(); 

      foreach (var tempFile in filesList) 
      { 
       var isZipped = tempFile.Contains(".gz"); 
       var dtTempFile = InternalUtils.GetTable(tempFile, isZipped); 

       foreach (DataRow row in dtTempFile.Rows) 
       { 
        if(dtTempFile.Rows.IndexOf(row) != 0) streamMaster.WriteLine(String.Join(",", row.ItemArray)); 
       } 
       streamMaster.Write(dtTempFile.Copy()); 

       dtTempFile.Dispose(); 
      } 

      streamMaster.Close(); 
      streamMaster.Dispose(); 
      Console.WriteLine("TA_{0} Complete", fileType); 

출력이처럼 많이 보인다?

+0

목록에 콘솔에 쓰는 코드가없는 것 같습니다 ... – Aron

+0

이상한 부분이 없습니다! StreamWriter 클래스와 관련이 있다고 가정합니다./ – Dezzamondo

+0

콘솔에 "..."을 쓰고있는 곳은 어디입니까? – Hassan

답변

1

진행하려면 Console animation을 표시 할 수 있습니다. |/과 같은 몇 가지 기호로 처리됩니다. 커서 위치를 애니메이션과 같이 회전시킬 수 있습니다.

Console.WriteLine("Writing to TA_{0}", fileType); 
    using(var streamMaster = new StreamWriter(Settings.WorkingDirectory + "TA_" + fileType, true)) 
    {  
     streamMaster.Flush(); 
     int counter = 0; 

     foreach (var tempFile in filesList) 
     { 
      ShowAnimation(++counter); 
      var isZipped = tempFile.Contains(".gz"); 
      var dtTempFile = InternalUtils.GetTable(tempFile, isZipped); 

      foreach (DataRow row in dtTempFile.Rows) 
      { 
       if(dtTempFile.Rows.IndexOf(row) != 0) 
        streamMaster.WriteLine(String.Join(",", row.ItemArray)); 
      } 
      streamMaster.Write(dtTempFile.Copy()); 
      dtTempFile.Dispose(); 
     } 
    } 
    Console.WriteLine("TA_{0} Complete", fileType); 

ShowAnimation 방법 :

public void ShowAnimation (int counter) 
{    
    switch (counter % 4) 
    { 
     case 0: Console.Write("/"); break; 
     case 1: Console.Write("-"); break; 
     case 2: Console.Write("\\"); break; 
     case 3: Console.Write("|"); break; 
    } 
    Console.SetCursorPosition(Console.CursorLeft - 1, Console.CursorTop); 
} 
+1

감사합니다. Hassan, 전 수도 있습니다. 대신에 코드를 넣으세요 :) – Dezzamondo

+0

왜이 코드를 게시 했습니까? 질문에 대답하지 않습니다 – musefan

+0

@ 뮤즈 팬. 그것은 요구 사항을 충족시킵니다. 나는 OP에서이 줄에 초점을 맞추었다. "이것을 꺼 버릴 수있는 방법이 있는가, 아니면 깜박 거리는 것과 같은 다른 것으로 바꿀 방법이 있을까?" – Hassan

0

 If m_intRecord Mod 1000 = 0 Then 
      Console.Write(".") 
     End If 

내가 완전히 간과해야합니다 ... 점에서 여러 레이어가 이런 짓을하는 기능이 있었다 밝혀! 와!

+0

VB.Net에서 글을 쓸 때 그 일은 일어납니다. – musefan