У меня есть код VB6, мне нужно медленно перейти к .NET. Для некоторых из них требуются звонки в Интернет. Я делаю веб-вызов из .NET dll, и когда это будет сделано, он запускает событие. Я обрабатываю событие в VB6. Теперь это отлично работает на моей тестовой машине и большинстве пользовательских машин, но некоторые пользователи получают последовательный крах программы когда-то вокруг, когда событие запускается.Как безопасно запускать асинхронный код и события в .NET, чтобы VB6 мог его обрабатывать?
Я думаю, что это проблема с резьбой. Итак, как я должен обрабатывать потоки на стороне .NET? Отсутствует контекст синхронизации, когда вызывается код .NET, и я думаю, что это может быть проблемой. Как я могу получить операцию async обратно в вызывающий поток VB6? Мой код VB6 - это STA, и я читал, что все будет автоматически подключаться к потоку VB6 через COM, но, возможно, это было неправильно? Я не совсем понимаю, что делать, если это действительно проблема с потоками.
Мне не удалось найти шаблон, на котором компьютеры столкнулись с проблемой сбоя, а какие нет.
Да, вы должны поднять это событие в потоке, который вызвал ваш конструктор. Вам нужен SynchronizationContext, вы можете легко получить его из формы Winforms. Одного достаточно, это не должно быть видно, просто прочитайте его свойство Handle, и это хорошо. –
Хмм, как я могу получить это из формы VB6? Я не открываю какие-либо формы в .NET. – bzuillsmith
Вы пытались отделить и сравнить .Net frameworks на возможных целевых машинах? хотя Microsoft заявляет о полной обратной совместимости в недавних версиях каркаса .Net, которые я нашел не раз, это утверждение является в основном чистым конным дерьмом. – Stavm