powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проблема с потоком
6 сообщений из 6, страница 1 из 1
Проблема с потоком
    #39821297
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По кнопке начало теста я запускаю поток
Код: c#
1.
2.
3.
4.
5.
6.
run = new Thread(new ThreadStart(TestRun));
if (!run.IsAlive)
{
     run.IsBackground = true;
     run.Start();
}


и в потоке я прогоняю список тестов
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
void TestRun()
{
    int idx = 0;
    string str;

    LogStart();
           
     foreach (Test test in test_list)
     { 

          this.Invoke((MethodInvoker)delegate
          {
                 listViewTests.Items[idx].UseItemStyleForSubItems = false;
                 listViewTests.Items[idx].SubItems[0].BackColor = Color.Yellow;
           });

            if (!string.IsNullOrEmpty(test.precondition))
                MessageBox.Show(test.precondition);

            //clear the buffer
            comport.ReadExisting();

            PreTestSet(test.opcode);

            SendCommand(test.opcode, test.param);
            str = "Opcode = " + test.opcode.ToString() + " Param = " + test.param.ToString();

            Invoke((MethodInvoker)delegate
            {
                  listViewTests.Items[idx].SubItems[2].Text = str;
            });

      
            if (GetResponse(5000, 1) == 1)   
            {
                if (response[0] != test.opcode)
                {
                    str += " Wrong response!";
                    this.Invoke((MethodInvoker)delegate
                    {
                        listViewTests.Items[idx].SubItems[2].Text = str;
                    });
                    test.result = FAIL;
                }

                if (!string.IsNullOrEmpty(test.postaction))
                {
                    if (test.dialog_type == DIALOG_OK)
                        MessageBox.Show(test.postaction);
                    else if (test.dialog_type == DIALOG_YES_NO)
                    {
                            DialogResult dialog_result = MessageBox.Show(test.postaction, "ATP", MessageBoxButtons.YesNo);

                            if (dialog_result == DialogResult.Yes)
                                test.result = PASS;
                            else if (dialog_result == DialogResult.No)
                                test.result = FAIL;
                    }
                }
                else
                {
                     test.result = ParseResponse(test.opcode, response[1]);
                }

                PostTestSet(test.opcode);

                PrintResult(test, idx);

                this.Invoke((MethodInvoker)delegate
                {
                     listViewTests.Items[idx].UseItemStyleForSubItems = false;
                     listViewTests.Items[idx].SubItems[0].BackColor = Color.White;
                });
            }
            else
            {
                PostTestSet(test.opcode)ж

                this.Invoke((MethodInvoker)delegate
                {
                      listViewTests.Items[idx].SubItems[2].Text = "No response form the device!";
                });
            }

            idx++;

            Application.DoEvents();
        }

        LogEnd();
        LogSave(log_report);
}


если я ставлю точку останова внутри TestRun, скажем на PrintResult(test, idx); - все пробегает хорошо и я вижу результат в listViewTests.
но если я не ставлю точку останова происходит черт знает что - первый результат высвечивается и потом он застревает где то в коде.

Как можно улучшить механизм?
...
Рейтинг: 0 / 0
Проблема с потоком
    #39821302
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
даже если я запускаю функцию без потока
Код: c#
1.
2.
3.
4.
private void buttonTestStart_Click(object sender, EventArgs e)
{
    TestRun();
}



то же самое. с отстановкой в коде все бежит красиво, без остановки - нет.
...
Рейтинг: 0 / 0
Проблема с потоком
    #39821360
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты свой Xunit (Nunit) пишешь?
...
Рейтинг: 0 / 0
Проблема с потоком
    #39821471
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fkthatТы свой Xunit (Nunit) пишешь?
а что Xunit тестирует железо? я реально подключаю девайс и прогоняю функциональный тест.
...
Рейтинг: 0 / 0
Проблема с потоком
    #39821903
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,

я так понимаю софтина зависает и не эрогирует ни на что?
...
Рейтинг: 0 / 0
Проблема с потоком
    #39822368
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pationjenya7,

я так понимаю софтина зависает и не эрогирует ни на что?
зависает, потом отмораживается на последнем тесте.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проблема с потоком
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]