Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 16.04.2017
Сообщений: 32

Форма появляется и зависает с колесиком загрузки навечно подвешивая платформу

28.07.2019, 19:42. Показов 5658. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace gcw_dll
{
    public static class Class1
    {
        [System.Reflection.Obfuscation(Feature = "DllExport")]
        public static int testik(int xx, int yy)
        {
            return xx + yy+1;
        }
 
        static Form1 MyFrm = new Form1();; /// Приватная переменная уровня класса
 
        [System.Reflection.Obfuscation(Feature = "DllExport")]
        public static void init()
        {
           MyFrm.ShowDialog(); // открытие формы
        }
 
        [System.Reflection.Obfuscation(Feature = "DllExport")]
        public static void newdata(double data1)
        {
            // пытаюсь изменить данные на форме
            MyFrm.LabelText = Convert.ToString(data1);
        }
    }
}
Возникла проблема.
MyFrm.ShowDialog(); похоже создает модальное окно. ДЛЛ зависает и не обрабатывает запросы, пока не MyFrm.hide()
Пробовал изначально делать MyFrm.Show(); форма появляется и зависает с колесиком загрузки навечно подвешивая платформу. Не понимаю почему так.

Добавлено через 1 час 4 минуты
архив проекта в аттачменте

ShowDialog() отображается сразу, а Show() отображается форма и без отображения элементов на ней сразу встает в вечную загрузку.

использую DLL. Внешняя библиотека работает с платформой которая при подключении отображает окно.

Добавлено через 1 минуту
пробовал отобразить платформу так:
C#
1
2
3
4
MyFrm.Opacity = 0;
            MyFrm.ShowIcon = false;
            MyFrm.ShowInTaskbar = false;
            MyFrm.Show();
результат тот же.
Вложения
Тип файла: rar gcw_dll.rar (28.5 Кб, 2 просмотров)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.07.2019, 19:42
Ответы с готовыми решениями:

Зависает во время анимации загрузки, если нажать любую клавишу, появляется рабочий стол
Ребят, Windows зависает во время анимации загрузки. если нажать любую клавишу, только тогда появляется рабочий стол. В чем может быть...

Через 5 минут после запуска игры компьютер зависает, на экране появляется цветные линии, картинка зависает.
(зависает компьютер ,когда запускаешь игру в течении 5 минут на экране появляется цветные линии и картинка виснет)Видеокарта G-forse 9600GT...

При загрузки Винды ХР загрузка зависает на значке ХР где бегает строка загрузки и все.
Сразу извиняюсь за повторы подобные темы были уже. Проблема вот в чем: При загрузки Винды ХР загрузка зависает на значке ХР где бегает...

34
Эксперт .NET
 Аватар для Rius
13383 / 7836 / 1697
Регистрация: 25.05.2015
Сообщений: 23,836
Записей в блоге: 14
29.07.2019, 08:48
Студворк — интернет-сервис помощи студентам
Можно. Вставляйте
0
0 / 0 / 0
Регистрация: 16.04.2017
Сообщений: 32
29.07.2019, 08:51  [ТС]
Аа все понял. Я подставил Form1 и все отобразилось!
Етить колотить, я бы такое не написал.
Rius премного благодарен!
0
Эксперт .NET
 Аватар для Rius
13383 / 7836 / 1697
Регистрация: 25.05.2015
Сообщений: 23,836
Записей в блоге: 14
29.07.2019, 08:52
Это в init указывается, если что.

Добавлено через 36 секунд
Написал бы, если читал книжки, а не брал нахрапом...
0
0 / 0 / 0
Регистрация: 16.04.2017
Сообщений: 32
29.07.2019, 08:54  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Написал бы, если читал книжки, а не брал нахрапом...
Возможно. Учил по ютубу)) догонялся гуглом)
Но тут большинство я уверен так не пишут. Просто у меня задача не прямая)
0
Эксперт .NET
 Аватар для Rius
13383 / 7836 / 1697
Регистрация: 25.05.2015
Сообщений: 23,836
Записей в блоге: 14
29.07.2019, 09:12
Если надо будет несколько строк с формой выполнить, не множьте вызовы напрасно.
Это делается так:
C#
1
2
3
4
5
6
thw.Do(w =>
{
    w.Text = DateTime.Now.ToString();
    w.BackColor = SystemColors.Window;
    ...........
});
1
0 / 0 / 0
Регистрация: 16.04.2017
Сообщений: 32
29.07.2019, 10:31  [ТС]
все же как все сложно то..
не могу никак достучаться до label1
пробовал
w.label1.text
w.Controls["label1"]
w.Controls.find("label1",false/true)

ошибками валит.
0
Эксперт .NET
 Аватар для Rius
13383 / 7836 / 1697
Регистрация: 25.05.2015
Сообщений: 23,836
Записей в блоге: 14
29.07.2019, 11:05
Значит, вы не все имена заменили:
ThreadedWindow<Form1> thw = new ThreadedWindow<Form1>(() => new Form1());

Добавлено через 1 минуту
И напрямую обращаться не надо. Есть
Цитата Сообщение от AleksSerg Посмотреть сообщение
LabelText - это сеттер.
0
0 / 0 / 0
Регистрация: 16.04.2017
Сообщений: 32
29.07.2019, 11:49  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Значит, вы не все имена заменили:
ThreadedWindow<Form1> thw = new ThreadedWindow<Form1>(() => new Form1());
А я вынес thw в глобал класса
C#
1
2
3
4
5
6
7
8
        (...)
        static ThreadedWindow<Form> thw;
 
        [System.Reflection.Obfuscation(Feature = "DllExport")]
        public static void init_()
        {
            thw = new ThreadedWindow<Form>(() => new Form1());
        (...)
иначе он не доступен в другом методе. Если пытаюсь изменить static ThreadedWindow<Form1> thw; сразу кричит Ошибка CS0029 Не удается неявно преобразовать тип "gcw_dll.ThreadedWindow<System.Windows.F orms.Form>" в "gcw_dll.ThreadedWindow<gcw_dll.Form 1>".
если попытаться тоже самое сделать с thw = new ThreadedWindow<Form>(() => new Form1()); та же ошибка.

Добавлено через 1 минуту
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
102
103
104
105
106
107
108
109
110
111
112
113
namespace gcw_dll
{
    public class Class1
    {
 
        [System.Reflection.Obfuscation(Feature = "DllExport")]
        public static int testik(int xx, int yy)
        {
            return xx + yy + 1;
        }
 
        //static Form1 MyFrm;
        //static Form1 MyFrm = new Form1();
        //static Thread mythread = new Thread(fornewthread);
        //Form1.showform(MyFrm);
        static ThreadedWindow<Form> thw;
 
        [System.Reflection.Obfuscation(Feature = "DllExport")]
        public static void init_()
        {
            thw = new ThreadedWindow<Form>(() => new Form1());
 
            //mythread.Start();
            //this.BeginInvoke((MethodInvoker)delegate
            //{
            //MyFrm.Opacity = 0;
            //MyFrm.ShowIcon = false;
            //MyFrm.ShowInTaskbar = false;
            //MyFrm.Show();
            //});
            //Form1 MyFrm = new Form1();
            //MyFrm.Show();
            //MyFrm.LabelText = "hjhjhjhjhjh";
            //MyFrm.Hide();
            //MyFrm.ShowDialog(); //Если использовать MyFrm.Show(); вылетит с ошибкой.
            //MyFrm.Show();
        }
 
        [System.Reflection.Obfuscation(Feature = "DllExport")]
        public static void inites()
        {
            //MyFrm.Show();   
            //MyFrm.ShowDialog(); //Если использовать MyFrm.Show(); вылетит с ошибкой.
            //MyFrm.Show();
        }
 
        [System.Reflection.Obfuscation(Feature = "DllExport")]
        public static void newdata(string data1)
        {
            //thw.Do(w => w.Controls["label1"].GetType = DateTime.Now.ToString());
            //object lab = Form1.getLabel();
            //MyFrm.LabelText = data1;
            //MyFrm.LabelText = Convert.ToString(data1);
            //Console.WriteLine(data1);
            //MyFrm.label1.text = Convert.ToString(data1);
            //Form1.getLabel("test");
            //object test=Form1.getLabel();
            //Form1.getLabel("тест");
            //int test = Form1.getLabel();
            //Form1.getLabel().text = Convert.ToString(data1);
        }
        [System.Reflection.Obfuscation(Feature = "DllExport")]
        public static void deinit_()
        {
            thw.Dispose();
        }
 
    }
 
    public class ThreadedWindow<T> : IDisposable where T : Form
    {
        private readonly Thread _thread;
        private readonly Func<T> _createWindow;
        private T _window;
 
        public ThreadedWindow(Func<T> createWindow)
        {
            _createWindow = createWindow;
            _window = null;
            _thread = new Thread(new ThreadStart(ThreadedMethod));
            _thread.SetApartmentState(ApartmentState.STA);
            _thread.Start();
        }
 
        public void Dispose()
        {
            Do(w => w.Close());
            _thread.Join();
        }
 
        public void Do(Action<T> actionWithWindow)
        {
            if (_window != null)
            {
                if (_window.InvokeRequired)
                {
                    _window.Invoke((Action)(() => actionWithWindow(_window)));
                }
                else
                {
                    actionWithWindow(_window);
                }
            }
        }
 
        private void ThreadedMethod()
        {
            _window = _createWindow();
            Application.Run(_window);
        }
    }
 
}
0
Эксперт .NET
 Аватар для Rius
13383 / 7836 / 1697
Регистрация: 25.05.2015
Сообщений: 23,836
Записей в блоге: 14
29.07.2019, 11:50
Я вам вроде бы 3 вхождения отметил, жирным шрифтом. А вы проигнорировали и упорно меняете одно?..
0
0 / 0 / 0
Регистрация: 16.04.2017
Сообщений: 32
29.07.2019, 11:56  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Я вам вроде бы 3 вхождения отметил, жирным шрифтом. А вы проигнорировали и упорно меняете одно?..
если это сделать в методе:
C#
1
2
3
4
5
6
 [System.Reflection.Obfuscation(Feature = "DllExport")]
        public static void init_()
        {
            //thw = new ThreadedWindow<Form>(() => new Form1());
            ThreadedWindow<Form1> thw = new ThreadedWindow<Form1>(() => new Form1());      
        }
То уже в
C#
1
2
3
4
5
[System.Reflection.Obfuscation(Feature = "DllExport")]
        public static void newdata(string data1)
        {
            thw.Do(w => (...)
        }
будет ошибка - thw не существует в данном контексте.
0
Эксперт .NET
 Аватар для Rius
13383 / 7836 / 1697
Регистрация: 25.05.2015
Сообщений: 23,836
Записей в блоге: 14
29.07.2019, 11:58
Ну как так можно, а???
C#
1
2
3
4
5
6
static ThreadedWindow<Form1> thw;
 
public static void init_()
{
  thw = new ThreadedWindow<Form1>(() => new Form1());
}
1
Эксперт .NET
 Аватар для Usaga
14370 / 9471 / 1360
Регистрация: 21.01.2016
Сообщений: 35,741
29.07.2019, 12:01
0
0 / 0 / 0
Регистрация: 16.04.2017
Сообщений: 32
29.07.2019, 12:07  [ТС]
Да блин, сорри!
Все! Через геттеры отдалась мне это label1.
Rius thanks!
0
13 / 13 / 2
Регистрация: 22.04.2010
Сообщений: 658
10.01.2021, 00:56
Цитата Сообщение от Rius Посмотреть сообщение
ThreadedWindow<Form> thw = new ThreadedWindow<Form>(() => new Form());
Как в эту форму передать параметр при создании?
0
Эксперт .NET
 Аватар для Rius
13383 / 7836 / 1697
Регистрация: 25.05.2015
Сообщений: 23,836
Записей в блоге: 14
10.01.2021, 04:48
Прописать параметры в вызове конструкторв формы new Form(параметры)

Добавлено через 29 секунд
Form заменить на свой класс формы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.01.2021, 04:48

После загрузки Dos, появляется экран загрузки винды, а после черный экран
Здравствуйте! У меня появилась небольшая проблема. Хочу ей с вами поделиться. После загрузки Dos, появляется экран загрузки винды, а после...

Около курсора появляется кружок загрузки
Добрый день.Windows 10 pro.Пару дней назад появилась проблема,около курсора стал появляется кружок загрузки,может не давать о себе знать 20...

Не появляется логотип Windows и зависает
При включение компьютер зависает там,где должен появится логотип Windows. Через безопасный заходит. Восстановление системы написало,что...

Не появляется форма
Вместо формы появляется ошибка. Как исправить не знаю (потому что нет формы а сам новичок в программировании). Вопрос: Можно ли, вернуть...

Форма не появляется!
В некоторых проектах которые я делал, или же запускал исходные коды - просто не появляется форма, т.е ошибок нету, при компиляции форма не...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru