Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690

Как сделать, чтобы после выполнения команды «switch» - «break» код продолжал работать?

21.01.2019, 12:31. Показов 2617. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Класс "ParserWorker"
В "WorkerHTMLFile()" методе перебирает список.
Список "ListUrlActive" содержит 4 строки.

Метод "ParsingPage(string source)" отправляет страницу в класс "SiteParser".

Класс "SiteParser"
Метод "Parsing(IHtmlDocument document)" после выполнения "break", "case" "Type_2": прерывает выполнение кода.

Если я правильно понял, то выполнение кода должно вернуться к "ParserWorker" классу, к методу "WorkerHTMLFile()" в цикл "for" .
И взять следующую строку списка «ListUrlActive», но этого не происходит.

Код обрабатывает только первую строку и завершает выполнение кода на "break" "case "Type_2""

Вопрос.
Как сделать , чтобы после выполнения "break", "case "Type_2"" код продолжал работать дальше?

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
class ParserWorker
{
    public void WorkerHTMLFile()
    {
        for (int i = 0; i <= ListUrlActive.Count; i++)
        {
            string source = File.ReadAllText(ListUrlActive[i]);                
            ParsingPage(source);
        }
    }
 
    public async void ParsingPage(string source)
    {
        var domParser = new HtmlParser();
 
        IHtmlDocument document = await domParser.ParseAsync(source);
 
        siteParser.Parsing(document);
    }
}
 
public class SiteParser
{
    public async void Parsing(IHtmlDocument document)
    {
        switch (settingOper.objectParsing)
        {
            case "Type_1":
                /// ...
                /// ... Code
                /// ...
 
                break;
 
            case "Type_2":                    
                var domParserAnnounc = new HtmlParser();
                var htmlBlockAnnounc = document.QuerySelectorAll("div.flexRoot > div.view.main");
 
                foreach (var item in htmlBlockAnnounc)
                {
                    string s = item.OuterHtml;
                    IHtmlDocument documentCur = await domParserAnnounc.ParseAsync(s);
 
                    ParsingPoster(documentCur);
                }
                break;
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.01.2019, 12:31
Ответы с готовыми решениями:

Как сделать чтобы консоль не выключалась после выполнения кода
Как сделать так,чтобы после выполнения кода,консоль повторяла его заново

Как написать таймер, чтобы при выходе из программы он продолжал работать?
Здравствуйте, подскажите как написать таймер чтобы при выходе из программы он продолжал работать? Например: поставить отсчет в метку на 5...

Как сделать, чтобы при свернутом окне keyListener продолжал слушать?
Здравствуйте, скажи пожалуйста, как сделать, чтоб при свернутом окне (frame(e)) keyListener продолжал слушать, или тут уже не keyListener...

5
19 / 13 / 8
Регистрация: 09.01.2019
Сообщений: 72
21.01.2019, 12:46
попробуйте
C#
1
await siteParser.Parsing(document);
1
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690
21.01.2019, 15:37  [ТС]
Цитата Сообщение от csharp08 Посмотреть сообщение
попробуйте
C#Выделить код
1
await siteParser.Parsing(document);
Пишет ошибку:
"Ожидание "void" невозможно"
0
Эксперт .NET
6524 / 4100 / 1606
Регистрация: 09.05.2015
Сообщений: 9,563
21.01.2019, 15:44
А если сделать
C#
1
public async Task Parsing(IHtmlDocument document)
и
C#
1
await siteParser.Parsing(document);
1
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690
21.01.2019, 18:11  [ТС]
csharp08, Someone007,
Сделал так.
Вроде работает...
Может есть какие замечания, предложения...?

Решение.
*** Класс `ParserWorker`

Метод `WorkerHTMLFile()`
Было: `public void WorkerHTMLFile()`
Стало: `public async void WorkerHTMLFile()`
Изменил состав метода.



Метод `ParsingPage(string source)`
Было: `public async void ParsingPage(string source)`
Стало: `public async Task<IHtmlDocument> ParsingPage(string source)`
Изменил состав метода.

*** Класс `SiteParser`
Метод ` Parsing(IHtmlDocument document)`
Было: `public async void Parsing(IHtmlDocument document)`
Стало: `public async Task Parsing(IHtmlDocument document)`

Было: `ParsingPoster(documentCur);`
Стало: `await ParsingPoster(documentCur);`

Код
Кликните здесь для просмотра всего текста
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
93
94
95
96
97
98
99
100
101
class ParserWorker
{
    public async void WorkerHTMLFile()
    {
        for (int i = 0; i <= ListUrlActive.Count; i++)
        {
            string source = File.ReadAllText(ListUrlActive[i]);                
            
            IHtmlDocument document = await ParsingPage(source);
 
            await siteParser.Parsing(document);
            
        }
    }
 
    public async Task<IHtmlDocument> ParsingPage(string source)
    {
        IHtmlDocument document = null;
        try
        {
            var domParser = new HtmlParser();
     
            IHtmlDocument document = await domParser.ParseAsync(source);
     
            document = await siteParser.Parsing(document);      
        }
        catch (Exception ex)
        {
                string s = ex.Message;
                string s1 = ex.StackTrace;
                // throw;
        }
        return document;
    }
}
 
public class SiteParser
{
    public async Task Parsing(IHtmlDocument document)
    {
        switch (settingOper.objectParsing)
        {
            case "Type_1":
                /// ...
                /// ... Code
                /// ...
 
                break;
 
            case "Type_2":                    
                var domParserAnnounc = new HtmlParser();
                var htmlBlockAnnounc = document.QuerySelectorAll("div.flexRoot > div.view.main");
 
                foreach (var item in htmlBlockAnnounc)
                {
                    string s = item.OuterHtml;
                    IHtmlDocument documentCur = await domParserAnnounc.ParseAsync(s);
 
                    await ParsingPoster(documentCur);
                }
                break;
        }
    }
}
 
public async void ParsingPoster(IHtmlDocument document)
        {
 
            try
            {
 
             try
                {
                     email = document.QuerySelectorAll("#start_widget > div:nth-child(3) > div.form-line.view-form-line > div.adv-point.view-adv-point > script:nth-child(3)")[0].TextContent.Trim();
 
                    email = wordProcessing.FindRegularExpression(email, @"(?<=eval\(unescape\(').*(?='\)\))");
                    email = wordProcessing.DecodeResult(email);
 
                    IHtmlDocument htmlDocumentEmail = await domParser.ParseAsync(email);                 
                    var itemsAttr = htmlDocumentEmail.QuerySelectorAll("a"); 
                    email = itemsAttr[0].TextContent.Trim();
 
                }
                catch (Exception ex)
                {
                    InfoMessageErrorEvent?.Invoke("Поле: 'email'. Error !!!" + ex.Message);
                }
                
                //...
                // ... Parsing additional fields ...
                //...
            }
            catch (Exception ex)
            {
                string s1 = ex.Message;
                string s2 = ex.StackTrace;
                // throw;
            }
 
 
        }
0
3565 / 2506 / 1174
Регистрация: 14.08.2016
Сообщений: 8,217
22.01.2019, 01:39
в случае case никак, задача то в чем?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.01.2019, 01:39
Помогаю со студенческими работами здесь

Как сделать так, чтобы вывод результата выполнения команды WMIC формировался без завершающего пробела?
Основно тэг: вывод результата WMIC в переменную. Мне нужно резать значение справа. Например, узнаем сколько свободного места на...

Почему switch продолжает работать (без break)?
Почему если мы уберем break то он выводит то что поидее не должен выводить. Вводим например символ a,а он печатает те слова которые не...

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

Как сделать, чтобы консоль не закрылась сразу после выполнения?
Подскажите пожалуйста, как сделать, чтобы окно консоли не закрывалось сразу после выполнения? Консоль мелькнула на экране и закрылась. ...

Как сделать, чтобы программа не закрылась сразу после выполнения?
помогите сделать так чтобы программа не закрылась сразу после выполнения #include &lt;iostream&gt; #include &lt;cstddef&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Рисование коллайдеров физического движка Box2D-WASM v3 на Three.js
8Observer8 04.06.2025
Erin Catto (автор Box2D) переписал с нуля Box2D v2 с С++ на Си и появилась версия Box2D v3. Birch-san собрал Box2D v3 в WebAssembly (WASM), чтобы можно было использовать Box2D v3 на JavaScript. В. . .
Worker Threads и многопоточность в Node.js
Reangularity 03.06.2025
Если вы когда-нибудь посещали собеседования на позицию Node. js разработчика, почти наверняка слышали заезженную фразу: "Node. js - однопоточная платформа". Звучит как неоспоримый факт, который. . .
Event-Driven CQRS на C# с паттерном Outbox
stackOverflow 03.06.2025
В традиционной модели происходит примерно следующее: вы получаете команду, обрабатываете ее, сохраняете результат в базу данных и затем пытаетесь опубликовать событие в брокер сообщений. Но что если. . .
OwenLogic: перенос сетевых переменных в панель Weintek (EasyBuilder Pro)
ФедосеевПавел 03.06.2025
ВВЕДЕНИЕ ПЕРЕД ЭКСПЕРИМЕНТАМИ - СОЗДАЙТЕ РЕЗЕРВНЫЕ КОПИИ ПРОЕКТОВ На момент написания статьи (02 июня 2025 г. ) самыми актуальными версиями ПО являются: OwenLogic v. 2. 10. 366 EasyBuilder Pro. . .
Dev-c++5.11 Покорение вершины
russiannick 02.06.2025
С утра преследовала одна мысль - вот бы выучить С++. Сказано-сделано. Окончив смену, скачал в интернете бестселлер Дэвиса Dev-C++ для чайников. Книга оказалась интересной и я скачал среду, на примере. . .
Тестирование Pull Request в Kubernetes с GitHub Actions и GKE
Mr. Docker 02.06.2025
Мы все знаем, что тестирование на локальной машине или в изолированном CI-окружении — это не совсем то же самое, что тестирование в реальном кластере Kubernetes. Контекстно-зависимые ошибки, проблемы. . .
Оптимизация CMake для ускорения сборки
bytestream 02.06.2025
Вы когда-нибудь ловили себя на мысле, что пока ваш проект компилируется, можно успеть сварить кофе, прочитать главу книги или даже сбегать в соседний офис? Если да, то добро пожаловать в клуб. . .
JS String.prototype.localeCo­mpare()
mr_dramm 02.06.2025
скопировано из этой темы чтобы не потерялось. localeCompare без указания локали для сравнения строк под капотом использует Intl. Collator , который работает согласно Unicode Collation Algorithm. . .
Облако проектов
russiannick 01.06.2025
Слава Джа, написал прогу для компиляции. Значит написал компилятор? Обьем кода 300+ строк. Язык-яву. Вводим данные, заполняем поля, тычем радиобаттоны. И по итогу в поле результат получам листинг. . .
Rust и квантовые вычисления: интеграция с Q# и Qiskit
golander 01.06.2025
Мир квантовых вычислений традиционно оставался закрытым клубом для высокоуровневых языков типа Python и специализированных DSL вроде Q#. Однако в последние годы Rust начал тихую революцию в этой. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »