Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 13.08.2013
Сообщений: 40
1

Вызов метода, ожидающего завершение другого метода

21.09.2013, 10:38. Показов 1859. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется процедура Proc. Я её вызываю в Button. Только вот программа, не дожидаясь завершения процедуры переходит к следующей строчке кода. Почему? Как сделать так, чтобы подождала, пока Proc завершиться?


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
 public async void Proc(string x, string y)
        {
            webBrowser1.ScriptErrorsSuppressed = true;
            webBrowser1.Navigate(s);
            webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
            while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();
            }
            await Task.Factory.StartNew(() => Pause(2));
            webBrowser1.Navigate(s1);
            webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
            while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();
            }
 
 
 
 
   private void button1_Click(object sender, EventArgs e)
    {
    Proc(x, y);
    webBrowser1.Navigate("http://www.yandex.ru/");
    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
    while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
    {
        Application.DoEvents();
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2013, 10:38
Ответы с готовыми решениями:

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

Вызов метода из другого класса
Имеется проект TestEvents. В нём есть класс ClassCounter, содержащий в себе открытый метод Count()....

Вызов метода из другого класса
Добрый день Прошу помощи. На главной форме приложения в левой части находится DataGridView с...

Не работает вызов одного метода в теле другого
здравствуйте. занимаюсь переводом проекта с С++ на C#. путем "дебага" обозначилась проблема, что в...

4
132 / 111 / 48
Регистрация: 08.02.2013
Сообщений: 621
21.09.2013, 11:49 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
 public async int Proc(string x, string y)
        {
            webBrowser1.ScriptErrorsSuppressed = true;
            webBrowser1.Navigate(s);
            webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
            while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();
            }
            await Task.Factory.StartNew(() => Pause(2));
            webBrowser1.Navigate(s1);
            webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
            while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
            {
                Application.DoEvents();
            }
          return 1;
 
  }
 
   private void button1_Click(object sender, EventArgs e)
    {
   if(Proc(x, y) == 1)
{
    webBrowser1.Navigate("http://www.yandex.ru/");
    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
    while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
}
    {
        Application.DoEvents();
    }
}
0
1 / 1 / 0
Регистрация: 13.08.2013
Сообщений: 40
21.09.2013, 12:29  [ТС] 3
Спасибо, но неужели нельзя без логических конструкций?

Добавлено через 5 минут
Неужели язык C# не предусматривает тупого вынесения части кода в процедуру и последующего последовательного выполнения ?

Добавлено через 29 минут
И вообще говоря, ваш код не сработает хотя бы потому что если к моменту if значение будет не равно 1, то просто ничего не произойдет.
0
132 / 111 / 48
Регистрация: 08.02.2013
Сообщений: 621
21.09.2013, 16:47 4
При каких обстоятельствах, оно может быть не равно одному ?
0
1 / 1 / 0
Регистрация: 13.08.2013
Сообщений: 40
21.09.2013, 18:47  [ТС] 5
При тех, что потребуется 10 секунд на загрузку страницы, а программа не будет ждать
0
21.09.2013, 18:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.09.2013, 18:47
Помогаю со студенческими работами здесь

Вызов метода в классе формы из класса другого проекта
Есть проект Project1 и Project2 - оба ClassLibrary. В Project1 происходит вызов форми из Project2...

Вызов метода класса Form1 из другого класса
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...

Завершение Invoke метода
Есть некоторый код, который обьявляет: public delegate void NewDelegate(int num,string name);...

Вызов метода
Имеются 3 класса, два из которых привязаны к UserControl а один к Form Класс DannieCombo class...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru