5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 690

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

21.01.2019, 12:31. Показов 2619. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Квантовые алгоритмы и обработка строк в Q#
EggHead 07.06.2025
Квантовые вычисления перевернули наше представление о том, как работать с данными, а Q# стал одним из ключевых языков для разработки квантовых алгоритмов. В традиционых системах мы оперируем битами —. . .
NUnit и C#
UnmanagedCoder 07.06.2025
В . NET существует несколько фреймворков для тестирования: MSTest (встроенный в Visual Studio), xUnit. net (более новый фреймворк) и, собственно, NUnit. Каждый имеет свои преимущества, но NUnit. . .
с++ Что нового?
russiannick 06.06.2025
Продолжаю обзор dev-cpp5. 11. Посмотрев на проекты, предоставленные нам для обучения, становится видно, что они разные по содержащимся файлам где: . dev обязательно присутствует . cpp/ . c один из них. . .
WebAssembly в Kubernetes
Mr. Docker 06.06.2025
WebAssembly изначально разрабатывался как бинарный формат инструкций для виртуальной машины, обеспечивающий высокую производительность в браузерах. Но потенциал технологии оказался гораздо шире - она. . .
Как создать первый микросервис на C# с ASP.NET Core, step by step
stackOverflow 06.06.2025
Если говорить простыми словами, микросервисная архитектура — это подход к разработке, при котором приложение строится как набор небольших, слабо связанных сервисов, каждый из которых отвечает за. . .
Рисование коллайдеров Box2D v2 на Three.js с помощью порта @box2d/core
8Observer8 06.06.2025
Используется порт Box2D v2 под названием @box2d/ core - пакет NPM. Загрузил документацию Box2D v2 на Netlify: https:/ / box2d-v2-docs. netlify. app/ Документацию Box2D v2 можно скачать с официального. . .
Как создать стек в Python
AI_Generated 05.06.2025
Как архитектор с более чем десятилетним опытом работы с Python, я неоднократно убеждался, что знание низкоуровневых механизмов работы стеков дает конкурентное преимущество при решении сложных задач. . . .
Server-Sent Events (SSE) в Node.js
run.dev 05.06.2025
Потоковая передача данных с сервера прямо в браузер стала повседневной потребностью - от биржевых графиков и спортивных трансляций до чатов и умных дашбордов. Много лет разработчики полагались на. . .
Создаем RESTful API на Golang с Fiber
golander 04.06.2025
Я перепробовал десятки фреймворков для создания RESTful API за последние годы, и когда впервые столкнулся с Fiber, понял, что это совсем другой уровень. Нет, я не собираюсь рассказывать сказки о. . .
Как работать с куки в ASP.NET Core
UnmanagedCoder 04.06.2025
Когда я впервые начал работать с куки в ASP. NET Core, меня поразило, насколько отличается работа с ними от классического ASP. NET. В Core все стало более декомпозированным - больше нет удобного. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »