|
2 / 2 / 0
Регистрация: 18.09.2016
Сообщений: 89
|
|
Глобальная переменная не меняет значение в Асинхронном методе31.12.2018, 14:19. Показов 4338. Ответов 10
Метки нет (Все метки)
Здравствуйте, возникла следующая проблема:
У меня есть асинхронный метод где я считываю данные из БД, есть событие и его обработчик (Загрузка Формы), есть глобальная переменная COUNT, есть массив структуры где будут храниться добавленные элементы В асинхронном методе предполагается подсчёт элементов через переменную COUNT, которые подходили под условия и были добавлены в массив (Собственно, для работы с массивом COUNT и была добавлена). Что происходит в отладчике: 1)Вызывается обработчик Form_load(); 2)В нём вызывается мо Добавлено через 9 минут 2)В нём вызывается мой асинхронный метод 3)Внутри происходит подключение к БД и логика добавления считанных из неё элементов в массив, при добавлении COUNT инкриментируется. 4)По завершении метода имеем: объекты в массиве, а так же ненулевой COUNT 5)После выхода из метода: COUNT = 0, Массив обнуляется. При этом меня почему то на выходе не выбрасывает обратно в обработчик событий, а просто выбрасывает в программу, хотя далее в нём ещё вызывается метод. Примечание: если взять код из метода и, сделав обработчик загрузки формы асинхронным, вставить его туда, то такого не происходит, значение COUNT сохраняется без каких либо изменений, с массивом тоже всё в порядке. Как с этим быть? Что делать? (Нет, просто постоянно вставлять этот кусок кода не выйдет во все методы, так как он очень большой и таких методов много)
0
|
|
| 31.12.2018, 14:19 | |
|
Ответы с готовыми решениями:
10
глобальная переменная |
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 31.12.2018, 14:23 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 18.09.2016
Сообщений: 89
|
||||||
| 31.12.2018, 14:44 [ТС] | ||||||
|
Как то несильно помогло:
Интуитивно разложил три числа(248) в такой ряд: 2 + 2^(n+1) Я прав?
1
|
||||||
|
2 / 2 / 0
Регистрация: 18.09.2016
Сообщений: 89
|
||||||||||||||||
| 31.12.2018, 15:03 [ТС] | ||||||||||||||||
|
Хорошо, вот некоторые фрагменты кода:
Глобальная область класса (объявление переменных, в том числе и проблемной):
Обработчик событий (Загрузка формы):
Асинхронный метод:
0
|
||||||||||||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 31.12.2018, 17:22 | |
|
Две вещи, которые бросаются в глаза:
1. Криво построена асинхронность. Почему метод ShowList вызывается еще до завершения работы OrganizeList, если для его работы нужен массив, который заполняется в асинхронном методе? 2. С большой вероятностью вы создаете один экземпляр Form1, а переменную потом проверяете в другом экземпляре. Покажите код создания формы и места, в котором получается нулевое значение переменной COUNT.
0
|
|
|
2 / 2 / 0
Регистрация: 18.09.2016
Сообщений: 89
|
|
| 03.01.2019, 16:44 [ТС] | |
|
И как же быть в таком случае?
Вызывать ShowList() изнутри асинхронного метода?
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||||||||||||
| 03.01.2019, 17:26 | ||||||||||||
0
|
||||||||||||
|
2 / 2 / 0
Регистрация: 18.09.2016
Сообщений: 89
|
|
| 03.01.2019, 18:21 [ТС] | |
|
Благодарю, сейчас нет возможности проверить из за другой проблемы связанной с БД.
(Странно, сам предлагает исправление и подсвечивает зелёным вызов метода OrganizeList(), намекая на await, однако при его написании ругается, говорит мол метод должен быть async и с типом Task, хотя это итак уже сделал) Добавлено через 39 минут Всё равно, не получается. Не пойму как это исправить, он ведь сам предлагает добавить await, а потом на него и ругается. Модификатор async добавлен, тип изменён на Task, что ещё нужно для счастья?
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 03.01.2019, 19:25 | |
|
0
|
|
| 03.01.2019, 19:25 | |
|
Помогаю со студенческими работами здесь
11
Глобальная переменная string глобальная переменная в консоле Глобальная переменная: Реализация через класс Глобальная переменная или передача параметра всем классам
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
1С: Программный отбор элементов справочника Номенклатура по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника Сотрудники по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|