Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/187: Рейтинг темы: голосов - 187, средняя оценка - 4.79
10 / 12 / 2
Регистрация: 13.01.2010
Сообщений: 363
1
.NET 4.x

Невозможно вызвать Invoke или BeginInvoke для элемента управления до завершения создания дескриптора окна.

25.12.2010, 18:20. Показов 38353. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите исправить ошибку
C#
1
Invoke(new MethodInvoker(InvokedConnectionStateChange)); // Ошибка: Невозможно вызвать Invoke или BeginInvoke для элемента управления до завершения создания дескриптора окна.
архив с проектом прикреплен
Вложения
Тип файла: rar Project.rar (134.6 Кб, 165 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2010, 18:20
Ответы с готовыми решениями:

Невозможно вызвать Invoke или BeginInvoke для элемента управления до завершения создания дескриптора окна
Всем привет. Написал класс для загрузки файлов, подключил его к главной форме, нажимаю загрузить, а...

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

Невозможно вызвать Invoke до завершения создания дескриптора окна
При нажатии на кнопку загружается список из ms sql и отображается в grid. Загрузка и отображение...

Невозможно вызвать Invoke ... до завершения создания дескриптора окна
Прошу помощи. Собрал вот такой код. Но при запуске ошибка "невозможно вызвать invoke или...

5
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
25.12.2010, 21:38 2
запустить твой проект не удалось: connetion is not active. но попробуй все-таки написать так (по-людски)
C#
1
2
3
if (this.InvokeRequired)
    this.Invoke(new MethodInvoker(InvokedConnectionStateChange));
else InvokedConnectionStateChange();
Добавлено через 2 часа 45 минут
я тут код почитал пару минут. самому не стыдно, разор?
0
Почетный модератор
Эксперт .NET
8722 / 3674 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
25.12.2010, 21:39 3

Не по теме:

Цитата Сообщение от Mikant Посмотреть сообщение
Добавлено через 2 часа 45 минут
я тут код почитал пару минут.
:rofl:

А вообще ошибка из-за того что окно не успевает создаться, т.е. метод CreateHandle ещё не был вызван. Советую перед тем как выполнять Invoke из другого потока и при этом нет точной уверенности что форма уже создана проверять IsHandleCreated.
2
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
25.12.2010, 22:20 4
не слабо, вы слышали что такое форматная строка?
C#
1
2
3
4
static void Log(string text)
        {
            log += "\n" + DateTime.Now.Date.Day.ToString() + "-" + DateTime.Now.Date.Month.ToString() + "-" + DateTime.Now.Date.Year.ToString() + " " + DateTime.Now.Date.Hour.ToString() + ":" + DateTime.Now.Date.Minute.ToString() + ":" + DateTime.Now.Second.ToString() + " :: " + text;
        }
Вот вам пример форматной строки:
C#
1
string.Format("{0:dd-MM-yyyy HH:mm:ss} :: {1}", DateTime.Now, text);
Далее, если вы используете вывод в псевдоконсоль на форме, то делайте просто унаследованый класс от StreamWriter и пред определяйте методы
WriteLine(...)
Write(...)
Вот пример такого класса:
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
internal class RichTextBoxWriter : StreamWriter
{
    public static RichTextBoxWriter Instance = new RichTextBoxWriter();
 
    public RichTextBox OutputBox;
 
    public RichTextBoxWriter()
        : base(new FileStream(Assembly.GetExecutingAssembly().GetName().Name + ".log", FileMode.Create))
    {
        this.AutoFlush = true;
 
        if (base.BaseStream.Position != 0)
        {
            base.WriteLine();
            base.WriteLine();
        }
    }
 
    public override void WriteLine(string value)
    {
        _Write(value + Environment.NewLine);
    }
 
    public override void WriteLine(string format, params object[] arg)
    {
        _Write(String.Format(format, arg) + Environment.NewLine);
    }
 
    public override void WriteLine()
    {
        _Write(Environment.NewLine);
    }
 
    public override void Write(string value)
    {
        _Write(value);
    }
 
    public override void Write(string format, params object[] arg)
    {
        _Write(String.Format(format, arg));
    }
 
    // Generic Write Method
 
    private void _Write(string text)
    {
        if (!OutputBox.IsDisposed)
        {
            Action f = () =>
            {
                OutputBox.AppendText(text);
                OutputBox.ScrollToBottom();
            };
 
            if (OutputBox.InvokeRequired)
                // Не ждем завершение UI операции.
                OutputBox.BeginInvoke(f);
            else
                f();
        }
 
        if (!string.IsNullOrWhiteSpace(text))
            base.Write(String.Format("[{0:yyyy.MM.dd HH:mm:ss.ffff}] {1}", DateTime.Now, text));
    }
}
Использование:
C#
1
2
3
4
5
6
// предопределяем класс, назначаем вывод через него
Console.SetOut(RichTextBoxWriter.Instance);
// говорим куда выводить
RichTextBoxWriter.Instance.OutputBox = this.rtbConsole;
// далее просто пишем
Console.WriteLine("bla bla {0} bla", bla);
C#
1
OutputBox.ScrollToBottom();
у вас работать не будет, это импортированный метод, используйте
C#
1
OutputBox.ScrollToCaret();
2
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
25.12.2010, 22:43 5
Цитата Сообщение от SSTREGG Посмотреть сообщение
окно не успевает создаться
или наоборот, после её "уничтожения"

Цитата Сообщение от SSTREGG Посмотреть сообщение
VS закрывал и почитал) сам уже смеюсь))
0
10 / 12 / 2
Регистрация: 13.01.2010
Сообщений: 363
26.12.2010, 12:59  [ТС] 6
Цитата Сообщение от Mikant Посмотреть сообщение
самому не стыдно, разор?
стыдно конечно. Но я и не говорил что я программист, я совсем новичок ещё, можно сказать. Задача была - написать программу, а не хорошо её написать.
0
26.12.2010, 12:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2010, 12:59
Помогаю со студенческими работами здесь

Ошибка: Невозможно вызвать Invoke или BeginInvoke
Порой мне кажется, что я слишком часто к вам обращаюсь, но прошу о помощи. Ситуация такова,...

Потоки. Нельзя вызвать Invoke до создания дескриптора окна
MainPanel SP = new MainPanel(); //окно с чартом OneCharting chartI =new OneCharting(); ...

Ошибка "Невозможно вызвать Invoke или BeginInvoke." при закрытии формы
Всем привет! Когда закрываю приложение если строка 78 закомментирована, то в строке 80 появляется...

Ошибка "Невозможно получить дескриптор окна для элемента управления 'WebBrowser'"
Прога должна каждые 20 сек синхронизироваться с сайтом с помощью таймера: System.Timers.Timer...


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

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