#c# #winforms #user-interface #serial-port
#c# #winforms #пользовательский интерфейс #последовательный порт
Вопрос:
Как я могу показать индикатор выполнения (не процент, а просто бесконечную строку) или диалоговое окно ожидания во время выполнения действия в _DataReceived ?
например:
private void sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
while (sp.BytesToRead > 1)
{
string line = sp.ReadLine().Trim();
if (line == "EOC")
{
//finish
}
else
{
//string data = sp.ReadExisting();
_serialBuffer.Enqueue(line);
}
}
}
Ответ №1:
Просто добавьте индикатор выполнения, установите его Style
ProgressBarStyle.Marquee
равным, чтобы он указывал, что он не дает процент. Теперь увеличьте его значение следующим образом: (Я предполагаю, что этот код находится в a Form
, в противном случае, если вы используете a BackgroundWorker
, используйте его ReportProgress
метод)
private void sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
while (sp.BytesToRead > 1)
{
string line = sp.ReadLine().Trim();
if (line == "EOC")
{
//finish
this.progressBar1.Visible = false;
}
else
{
//string data = sp.ReadExisting();
_serialBuffer.Enqueue(line);
if (this.progressBar1.Value < 100)
this.progressBar1.Value ;
else
this.progressBar1.Value = 0;
}
}
}