Отслеживание общего прогресса при параллельной обработке - PullRequest
0 голосов
/ 17 мая 2019

У меня есть DCF, встроенный в рабочий лист Excel, так что пользователи могут свободно редактировать DCF по мере необходимости. Я повторяю более 1000 вариантов предположений в цикле for в Excel VBA. Пытаясь ускорить это, я обнаружил идею многопоточности Тома здесь: https://analystcave.com/excel-tools/excel-vba-multithreading-addin/.

Я получил это на работу и значительно ускорил расчеты. Теперь я хотел бы отследить в пользовательской форме общий ход выполнения итераций.

Я попытался использовать решение для скрытых имен Chip Pearsons здесь: http://www.cpearson.com/Excel/hidden.htm.

К сожалению, когда я использую это в одном из параллельных потоков, он ломается.

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

SetHiddenName "Total_iter", (GetHiddenName("Total_iter") + 1)

Скрытые имена функций / подписчиков:

Public Sub SetHiddenName(Name As String, Value As Variant)
    Application.ExecuteExcel4Macro "SET.NAME(""" & Name & """, " & Value & ")"
End Sub

Public Function GetHiddenName(Name As String)
    GetHiddenName = Application.ExecuteExcel4Macro(Name)
End Function

Sub DeleteHiddenName(Name As String)
    Application.ExecuteExcel4Macro "SET.NAME(""" & Name & """)"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...