Обсуждение статьи "Создание графических интерфейсов на базе .Net Framework и C# (Часть 2): Дополнительные графические элементы" - страница 2

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Обнаружилась очень серьезная ошибка работы с C#-окнами. Если непрерывно перемещать C#-окно, то через несколько секунд Терминал исчезает с экрана, при этом нагрузка на CPU-ядра у terminal64.exe превышает 100%. У меня 8 ядер, поэтому полная нагрузка ядра в TaskManager у CPU 12-13%. При движении C#-окна - 19%.
О, прикольно. Попробовал - действительно исчезает. Вернее не исчезает, а сворачивается в трей, так как будто нажали кнопку "свернуть".
Что касается 100% загрузки - у меня не наблюдается. Возможно действительно дело в том что у Вас она встроена, а у меня нет.
Снятие GuiControllerElementsDemo руками через меню Терминала приводит к подвисанию на несколько секунд.
Есть такое. Наблюдается только в том случае, если перед этим вручную не закрыть форму. Пока не знаю как обойти. Пробовал программно в Deinit() гасить форму несколькими способами, однако не один из них не подошел. Если кто из знающих подскажет - буду благодарен.
Есть такое. Наблюдается только в том случае, если перед этим вручную не закрыть форму. Пока не знаю как обойти. Пробовал программно в Deinit() гасить форму несколькими способами, однако не один из них не подошел. Если кто из знающих подскажет - буду благодарен.
а почему стандартный обработчик private void Form2_FormClosing(object sender, FormClosingEventArgs e)
не хочет работать?
я когда с dll ан C# эксперименты творил, почему то при выходе крешилось все из за того, что не уничтожал созданные компоненты вне самой формы, вот такое было:
если не уничтожал перед закрытием формы из MQL - то тормозило жутко или креш
О, прикольно. Попробовал - действительно исчезает. Вернее не исчезает, а сворачивается в трей, так как будто нажали кнопку "свернуть".
Попробовал шевелить окно самого Терминала (C# не запущен). Секунд через 10 абсолютно все окна (ME, браузеры и т.д.) свернулись, оголив рабочий стол.
Что касается 100% загрузки - у меня не наблюдается. Возможно действительно дело в том что у Вас она встроена, а у меня нет.
При этом мониторил выполнение советника. Вот результат
Хорошо видно, что советник прекратил свою работу на время движения окна Терминала.
При этом мониторил выполнение советника. Вот результат
Хорошо видно, что советник прекратил свою работу на время движения окна Терминала.
Сделал проверку через таймер - зависаний не вижу. Очень шустро в лог все отправляет.
а почему стандартный обработчик private void Form2_FormClosing(object sender, FormClosingEventArgs e)
не хочет работать?
я когда с dll ан C# эксперименты творил, почему то при выходе крешилось все из за того, что не уничтожал созданные компоненты вне самой формы, вот такое было:
если не уничтожал перед закрытием формы из MQL - то тормозило жутко или креш
Я пробовал делать через стандартный form.Dispose(). Т.е. когда вызывается GuiController::HideForm() идет вызов Dispose соответствующей формы. В тестовом приложении на C# прекрасно все работало. Но в MT это не катит. Зато если перед удалением эксперта ручками закрываем форму - все отлично работает.
Я пробовал делать через стандартный form.Dispose(). Т.е. когда вызывается GuiController::HideForm() идет вызов Dispose соответствующей формы. В тестовом приложении на C# прекрасно все работало. Но в MT это не катит. Зато если перед удалением эксперта ручками закрываем форму - все отлично работает.
Здесь выгружается мгновенно.
Здесь выгружается мгновенно.
Да, видел Вашу панель. С помощью какой функции выгружаетесь?
Я пробовал делать через стандартный form.Dispose(). Т.е. когда вызывается GuiController::HideForm() идет вызов Dispose соответствующей формы. В тестовом приложении на C# прекрасно все работало. Но в MT это не катит. Зато если перед удалением эксперта ручками закрываем форму - все отлично работает.
однозначно гуглить нужно, какой то процесс висит
как вариант, все равно нужно Form.Close() вызывать, чтобы Виндовс приложение закрыла
https://stackoverflow.com/questions/3097364/c-sharp-form-close-vs-form-dispose
Not calling Close probably bypasses sending a bunch of Win32 messages which one would think are somewhat important though I couldn't specifically tell you why...
Close has the benefit of raising events (that can be cancelled) such that an outsider (to the form) could watch for FormClosing and FormClosed in order to react accordingly.
I'm not clear whether FormClosing and/or FormClosed are raised if you simply dispose the form but I'll leave that to you to experiment with.
Да, видел Вашу панель. С помощью какой функции выгружаетесь?
Да, видел Вашу панель. С помощью какой функции выгружаетесь?
Это панель Игоря. Я только опубликовал.