1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 449
|
|
1 | |
Маленькое продолжение темы "Аналог Excel-метода "OnTime"" или про многопоточность02.09.2014, 09:48. Показов 9814. Ответов 56
Метки нет (Все метки)
Коллеги, хочу добавить несколько слов ... (раз уж речь зашла про 2003 офис)
Комментарий: на счет глючности версий после 2003 ... извините, IMHO - эта версия наиболее нестабильная на фоне всех после нее вышедших ... жаль, что не собирал баги раньше (их стало значительно меньше. очень значительно!). Комментарий: если хотите использовать виндовый таймер - 100 раз подумайте. Его использование сопряжено с огромным количеством НО ... Комментарий: когда-то ... (как раз) в бытность 2003 офиса, использовал один из сторонних OCX-таймеров. Так вот, вопреки всему здавому смыслу и опыту эксперементаторов использовать многопоточность в Экселе - могу вас заверить - получалась НОРМАЛЬНОЕ "многопотоковое"(или псевдомногопотоковое) выполнение кода. Одновременно отрабатывало 2, 3 и более экземпляров вызываемой функции если она не успевала закончить свое выполнение раньше, чем вызывалась ее копия ... Пробовал провернуть такой опыт потом на других версиях - не получалось. Объяснить? Ни коем разом. Не могу. Но это работало и факт. (когда-то искал, какие-то ссылки и примеры в интернете были ... но все это было не работающее или работающее сильно не стабильно) Вопрос: кто пробовал и каких добился результатов на запуск нескольких потоков в VBA? Было бы здорово ...
0
|
02.09.2014, 09:48 | |
Ответы с готовыми решениями:
56
Аналог Excel-метода "OnTime" Про отсебятину (продолжение оффтопа из профильной темы) Осуществить автоматизированный запрос с сайта в Excel продолжение темы Аналог Application.OnTime в OutLook Продолжение темы PictureBox |
Заблокирован
|
||||||
03.09.2014, 12:34 | 41 | |||||
Добавлено через 4 минуты По хорошему, можно было реализовать через коллекцию, тогда нужно в массив добавить еще и ключ в перечислении Array(КЕУ, ClassObj, RaiseObject, ProcName) Добавлено через 22 минуты Переделал ! ✰
0
|
Модератор
|
|
03.09.2014, 12:47 | 42 |
1
|
Заблокирован
|
|
03.09.2014, 12:53 | 43 |
0
|
Заблокирован
|
|
03.09.2014, 13:01 | 45 |
обычно вы и не разъясняете, к тому-же я не стремлюсь их от вас получать
я понимаю, ресурсы и прочее, но вы уже перегибаете зачем мне знать куда какой байт перекинулся на машинном уровне, когда реч идет о квантах времени, и минимальном использовании памяти
0
|
StepInLik
|
03.09.2014, 13:05
[ТС]
#46
|
Не по теме: Извините, не могу согласиться. Мы что, работаем в жестких условиях ограничения процессорного времени? Насколько понимаю, коллега что-то пишет без четких "технических требований" на оптимизацию работы кода. Почему ему нужно следовать этим требованим? Безусловно, качество повышается при внутренней самоорганизации и повышении требований к самому себе ... но на все это - нужно время ... и не месяц и не два ... и эти требования он должен предъявить себе сам, а не мы с вами. И уж если мы взялись и хотим помочь человеку с чем-то столь фундаментальным - давайте наберемся терпения, уважения и запасемся аргументами. Причина в том, что он над этим не думает и в том, что не попадал в ситуации, когда начинаешь экономить чуть ли не каждый такт и байт ресурсов компьютера. Возможно, стоит говорить, что его код не кривой, а не оптимизированный ... ведь по сути он выполняет сформулированную задачу?
0
|
Модератор
|
|
03.09.2014, 13:05 | 47 |
Ты глубоко заблуждаешься. Когда задача стоит вроде этой, то в принципе это не имеет значения, но в более больших проектах это будет заметно. Тем более никто хорошего тона в программировании не отменял.
Что? По-моему я один из немногих кто тестирует твои коды. Я не буду спорить с тобой, пиши что хочешь.
0
|
Заблокирован
|
|
03.09.2014, 13:15 | 48 |
0
|
Модератор
|
|
03.09.2014, 13:16 | 49 |
Я уже приводил пример кода с присвоением переменной на этот счет в этой теме. И все что я думаю на этот счет там же отписал. Это мое право - высказываться, тем более я это делаю не без оснований.
Я ему написал совет как сделать лучше (я думаю так считают многие), но он не сделал как я просил. Я выставил свою оценку его "творчеству". Я не вижу в этом ничего плохого. Опять-таки - это мое право. Я бы мог ему понизить репу за это, но я не стал, т.к. знаю что он ей очень дорожит и что он не такой опытный программист чтобы его "наказывать" за плохие решения. Он этот код выложил на всеобщее обозрение как готовое решение, этим кодом будут пользоваться люди - этот код должен быть хорошим, я помогаю в этом ему если никто так этого не понял.
0
|
StepInLik
|
03.09.2014, 13:16
[ТС]
#50
|
Не по теме: Коллега, можно вопрос не по теме? Тестируя код Антихакер32 - это ваша созидательная деятельность в развитии вашего коллеги? или в этом есть что-то еще? Мне кажется в вашем общении есть что-то ограничивающее это общение ... может быть это стоит перезагрузить и в дальнейшем с уважением общаться на тему продуктивности и обменом знаниями?
0
|
Заблокирован
|
|
03.09.2014, 13:23 | 51 |
The trick, вы просто разъясните,
как можно по другому (не так, как у меня) реализовать, многократное использование таймера тоесть из одного модуля вызывать паралелно разные процедуры в разных классах и с разным интервалом.. а лучше напишите готовый пример (как сделал я), и я даже вам спасибо скажу (переплюну через себя, и скажу)
0
|
Модератор
|
|
03.09.2014, 13:24 | 52 |
Я тестирую все коды из раздела VB6, а не только его и даю им свою оценку. Но т.к. основная масса кодов от него, то получается он в основном его коды. И тестирую их для других, а не для авторов, для тех кто будет пользоваться ими.
Ничего, по крайней мере с моей стороны. По моему, коллеги, мы с вами ушли от темы. По-теме, у меня есть предположение что можно сделать рабочий поток используя MSVBVM60, но там столько ньюансов (я как-то делал это в VB6), что думаю этот метод вряд ли кому-нибудь понравится. Могу рассказать, если интересно. Добавлено через 34 секунды Что тут можно сказать?
0
|
|
03.09.2014, 13:27
#53
|
Не по теме: переплюнуть через себя, это оборот речи такой, что значит, усмирить свою гордость
0
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 449
|
|
03.09.2014, 13:30 [ТС] | 54 |
Не по теме: Уважаемый, а вам сложно сказать спасибо? Для этого надо переплевывать? Возможно вам тоже стоит перезагрузить свое отношение к нашему коллеге The trick. У вас у обоих есть знания. У кого-то больше, у кого-то меньше ... все равно мы все живем здесь в одной комнате. Зачем какие-то распри? Насколько понимаю - цель форума делиться знаниями, а не эмоциями ... Добавлено через 3 минуты Безусловно интересно. Тема живая и поддерживается производственными требованиями. Рад ошибаться!
0
|
Модератор
|
|
03.09.2014, 13:35 | 55 |
Сколько раз мне продублировать чтобы это было прочитано? Больше не буду.
Это видимо было ответом на Добавлено через 4 минуты Идея в том, что возможно VBA (32 bit) использует такую же схему инициализации потока как и VB6. Для инициализации потока нужно вызвать VBDllGetClassObject из MSVBVM60 (в самом простом случае), передавая хидер в одном из параметров. Вот если в VBA есть хидер от VB6-проекта, то тогда можно попытаться инициализировать контекст. Но там есть свои траблы с данными, котороые нужно смотреть на месте.
1
|
|
03.09.2014, 13:39
#56
|
0
|
StepInLik
|
03.09.2014, 13:56
[ТС]
Маленькое продолжение темы "Аналог Excel-метода "OnTime"" или про многопоточность
#57
|
Не по теме: Поговите с модераторами и получите от них условия, при которых они будут готовы обнулить ваши нарушения. Они тоже люди и уверен! - оценят ваше желание и стремление. Это форум, а не калькулятор. Если же речь за ваш показатель репутации - то IMHO это не те сантиметры ... на которые надо смотреть. Больше уделяйте внимания вашей работе, а не каким-то абстрактным цифрам ... и постарайтесь прислушаться к этому совету.
0
|
03.09.2014, 13:56 | |
Продолжение темы сортировки Продолжение темы: 1С Профессионал Продолжение темы сортировки DLookUP( в продолжение темы) В продолжение темы Чат на C# Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |