| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Не моуг разобраться с BeginInvoke |
| Автор: Torgovec 12.9.2008, 21:27 | ||
| Мне необходимо запускать метод CheckConnection класса Pinger ,и ловить из него значение, но при этом программа не должна ожидать окончания работы этого метода т.к. внутри него используется рекурсия, т.е. без использования треда метод вешает всю программу. Вот чем я попытался выйти из положения:
Сразу оговорюсь, что код приведенный выше я подсмотрел в гугле, когда искал способ возвращать значения из треда. Я представлял себе, что это должно работать примерно так: Сохраняем в делегате ссылку на функцию, BeginInvoke запускает Threadс этой функцией, а EndInvoke проверяет, если Thread отработал и вернул значение сохраняет его в nResult . На деле выходит следующее: BeginInvoke запускает функцию, а сразу после него EndInvoke запускает эту же функцию, в итоге в моем случае возвращаемое значение плывет на единицу. Прошу помочь разобраться. |
| Автор: Torgovec 12.9.2008, 22:13 | ||
Вроде немного разобрался, заменил на след. конструкцию:
Теперь функция возвращает правильно значение, только заметил следующую вещь - независимо от того что создается поток, программа притормаживает на этом месте,т.е. когда запускается cc.BeginInvoke(null,null), форма приложения на любые события не реагирует, до EndInvoke :( |
| Автор: Torgovec 12.9.2008, 22:40 |
| Спасибо, я во всем разобрался |