2015-05-04 3 views
0

Я написал утилиту синтаксического анализа в качестве консольного приложения и хорошо ее работаю. Утилита считывает файлы с разделителями и на основе значения пользователя, поскольку аргументы командной строки разбивают запись на один из двух файлов (хорошие записи или плохие записи).Панель выполнения с консольным приложением VB.NET

Ищете индикатор выполнения или индикатор состояния, чтобы показать выполненную работу или оставшуюся работу при разборе. Я мог бы легко написать <.> Через экран внутри цикла, но хотел бы дать%.

Спасибо!

+0

является вычисление% вашего проблема или способ распечатать ее на том же месте? – Cadburry

ответ

1

1-й уровень: вы должны знать, сколько линий вы ожидаете. В вашей стоимости петли "intLineCount/100 * intCurrentLine"

int totalLines = 0 // "GetTotalLines" 
int currentLine = 0; 
foreach (line in Lines) 
{ 
    /// YOUR OPERATION 

    currentLine ++; 
    int progress = totalLines/100 * currentLine; 

    ///print out the result with the suggested method... 
    ///!Caution: if there are many updates consider to update the output only if the value has changed or just every n loop by using the MOD operator or any other useful approach ;) 
} 

и распечатать результат на тот же posititon в вашем цикле, используя метод SetCursor MSDN Console.SetCursorPosition

VB.NET:

Dim totalLines as Integer = 0 
Dim currentLine as integer = 0 
For Each line as string in Lines 
    ' Your operation 

    currentLine += 1I 
    Dim Progress as integer = (currentLine/totalLines) * 100 

    ' print out the result with the suggested method... 
    ' !Caution: if there are many updates consider to update the output only if the value has changed or just every n loop by using the MOD operator or any other useful approach 

Next 
+0

Я изменил вашу ссылку на английскую версию, так как большинство читателей не знают немецкий язык, и я добавил эквивалент VB.NET вашего кода на C#, так как OP помечен этим вопросом 'vb.net'. –

+0

@BrandonB привет - уверен, что моя ошибка np – Cadburry

+0

Отличный пример! Я успешно работаю. Спасибо! –

0

Ну Самый простой способ - часто обновлять переменную progressBar, Пример: если ваш код состоит из около 100 строк или может быть 100 функциональных возможностей после каждой функции или некоторых строк обновления кода переменной ProgressBar с процентом :)

1

Вот пример того, как вычислить процент полного и вывода его в счетчик прогресса:

Option Strict On 
Option Explicit On 

Imports System.IO 

Module Module1 
    Sub Main() 
     Dim filePath As String = "C:\StackOverflow\tabSeperatedFile.txt" 
     Dim FileContents As String() 


     Console.WriteLine("Reading file contents") 
     Using fleStream As StreamReader = New StreamReader(IO.File.Open(filePath, FileMode.Open, FileAccess.Read)) 
      FileContents = fleStream.ReadToEnd.Split(CChar(vbTab)) 
     End Using 

     Console.WriteLine("Sorting Entries") 
     Dim TotalWork As Decimal = CDec(FileContents.Count) 
     Dim currentLine As Decimal = 0D 

     For Each entry As String In FileContents 
      'Do something with the file contents 

      currentLine += 1D 
      Dim progress = CDec((currentLine/TotalWork) * 100) 

      Console.SetCursorPosition(0I, Console.CursorTop) 
      Console.Write(progress.ToString("00.00") & " %") 
     Next 

     Console.WriteLine() 
     Console.WriteLine("Finished.") 
     Console.ReadLine() 

    End Sub 
End Module 
Смежные вопросы