Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 22.01.2019
Сообщений: 8
1

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

22.01.2019, 06:15. Просмотров 904. Ответов 9
Метки нет (Все метки)

Прошу помощи. Собрал вот такой код. Но при запуске ошибка "невозможно вызвать invoke или begininvoke для элемента управления..."
Вот сам код. Я новичок сильно не пинайте.
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using System.Xml;
 
namespace WindowsFormsApp12
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            UpdatesMod();
        }
 
        //Проверка обновления
        private void UpdatesMod()
        {
            Version remoteVersion = new Version(1, 0, 0);
            Version localVersion = new Version(1, 0, 0);
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(@"http://Site.ru/version.xml");
 
                XmlDocument localdoc = new XmlDocument();
                localdoc.Load("version.xml");
 
                remoteVersion = new Version(doc.GetElementsByTagName("version")[0].InnerText);
                localVersion = new Version(localdoc.GetElementsByTagName("version")[0].InnerText);
 
                if (localVersion >= remoteVersion)
                {
                    MessageBox.Show("Не требует обновления.", "Обновление мода",
                    MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                    Thread.Sleep(200);
                    Close();
                }
 
                if (localVersion < remoteVersion)
                {
                    Download();
                }
            }
            catch (Exception) { }
        }
 
        void Download()
        {
            try
            {
                const string url = "ftp://ipadress//Update.zip";
                NetworkCredential credentials = new NetworkCredential("login", "pass");
 
                // Query size of the file to be downloaded
                WebRequest sizeRequest = WebRequest.Create(url);
                sizeRequest.Credentials = credentials;
                sizeRequest.Method = WebRequestMethods.Ftp.GetFileSize;
                int size = (int)sizeRequest.GetResponse().ContentLength;
 
                progressBar1.Invoke(
                    (MethodInvoker)(() => progressBar1.Maximum = size));
 
                // Download the file
                WebRequest request = WebRequest.Create(url);
                request.Credentials = credentials;
                request.Method = WebRequestMethods.Ftp.DownloadFile;
 
                using (Stream ftpStream = request.GetResponse().GetResponseStream())
                using (Stream fileStream = File.Create(@"Update.zip"))
                {
                    byte[] buffer = new byte[10240];
                    int read;
                    while ((read = ftpStream.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        fileStream.Write(buffer, 0, read);
                        int position = (int)fileStream.Position;
                        progressBar1.Invoke(
                            (MethodInvoker)(() => progressBar1.Value = position));
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2019, 06:15
Ответы с готовыми решениями:

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

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

Невозможно вызвать Invoke или BeginInvoke для элемента управления до завершения создания дескриптора окна.
Помогите исправить ошибку Invoke(new MethodInvoker(InvokedConnectionStateChange)); // Ошибка:...

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

9
Эксперт .NET
7402 / 5169 / 889
Регистрация: 21.01.2016
Сообщений: 19,923
22.01.2019, 07:52 2
MrRaccoon, при запуске или при компиляции? На какой строке возникла ошибка? Её полный текст нужно угадать или вы его можете предоставить?
0
0 / 0 / 0
Регистрация: 22.01.2019
Сообщений: 8
22.01.2019, 07:58  [ТС] 3
И при компиляции и при запуске а в окне с ошибками ничего нет
0
Эксперт .NET
7402 / 5169 / 889
Регистрация: 21.01.2016
Сообщений: 19,923
22.01.2019, 08:00 4
MrRaccoon, ещё раз: при компиляции ИЛИ при запуске? Если приложение не компилируется, то и запускать нечего. И на остальные вопросы тоже бы ответ получить.
0
0 / 0 / 0
Регистрация: 22.01.2019
Сообщений: 8
22.01.2019, 08:01  [ТС] 5
Ну я уже сказал что новичок) Четвертый день в глаза вижу VS. Можете подсказать как всё это узнать?
0
Эксперт .NET
7402 / 5169 / 889
Регистрация: 21.01.2016
Сообщений: 19,923
22.01.2019, 08:03 6
MrRaccoon, вы можете описать КАК выглядит ошибка? Или скриншот приложить, раз уж вообще не понимаете, что от вас требуют.
0
0 / 0 / 0
Регистрация: 22.01.2019
Сообщений: 8
22.01.2019, 08:06  [ТС] 7
Вот скриншот
0
Миниатюры
Невозможно вызвать Invoke ... до завершения создания дескриптора окна  
Эксперт .NET
7402 / 5169 / 889
Регистрация: 21.01.2016
Сообщений: 19,923
22.01.2019, 08:09 8
MrRaccoon, ну, вроде бы русским языком сказано, что не так. Сначала создайте окно, потом вызывайте ваш код загрузки. А то получается, что вы пытаетесь что-то в ProgressBar вывести, когда этот контрол ещё даже не успел на экране появиться.
0
0 / 0 / 0
Регистрация: 22.01.2019
Сообщений: 8
22.01.2019, 08:11  [ТС] 9
Ну это я понял. А можете подсказать как правильно сделать? Буду очень благодарен
0
Эксперт .NET
7402 / 5169 / 889
Регистрация: 21.01.2016
Сообщений: 19,923
22.01.2019, 08:22 10
MrRaccoon, не вызывайте метод UpdatesMod из конструктора. Или не обращайтесь из этого метода к контролам ещё не нарисованного окна.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2019, 08:22

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

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

Ошибка в потоке "Невозможно вызвать Invoke ."
Создал класс, который в отдельном потоке выполняет SQL запросы к базе и заполняет DataTable. ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.