Я работаю над проектом, для которого требуется отдельная форма, на которой работает поток сервера, для доступа и изменения местоположения управления другими формами. Я знаю, как вызвать элемент управления из другого потока, работающего в той же форме, но я не уверен, как это сделать в отдельной форме и потоке.VB.net Перекрестная форма вызова для сквозных потоков?
-4
A
ответ
2
Вот простой пример ...
Определить событие в вашей форме сервера и поднять его при необходимости:
Public Class frmServer
Public Event NewPosition(ByVal pt As Point)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' ... in response to something (probably not a button click!) ...
Dim x As Integer = 250
Dim y As Integer = 100
RaiseEvent NewPosition(New Point(x, y))
End Sub
End Class
В главной форме, подписаться на это событие при создании экземпляра формы сервера. Это можно сделать с помощью инструкции AddHandler
и ключевого слова AddressOf
. Затем сделайте нормальный рисунок Invoke
, чтобы убедиться, что он работает в правильной нити пользовательского интерфейса:
Public Class frmMain
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim server As New frmServer
AddHandler server.NewPosition, AddressOf server_NewPosition
server.Show()
End Sub
Private Delegate Sub dlgNewPosition(ByVal pt As Point)
Private Sub server_NewPosition(pt As Point)
If Me.InvokeRequired Then
Me.Invoke(New dlgNewPosition(AddressOf server_NewPosition), New Object() {pt})
Else
Me.Location = pt
End If
End Sub
End Class
+0
Большое спасибо, это решило мою проблему! – Orion
Смежные вопросы
- 1. VB.net Перекрестная обработка связи
- 2. Неверная перекрестная передача VB.NET
- 3. VB.net Перекрестная резьба
- 4. Вложенная форма имеет много сквозных рельсов4
- 5. vb.net pinging для нескольких потоков
- 6. Перекрестная связь потоков при доступе к datagrid
- 7. Синхронизация потоков для вызова pthread_cond_broadcast
- 8. DatagridView VB.Net, безопасность потоков
- 9. Понимание сквозных потоков Доступ к элементам управления C#
- 10. Предотвращение последующих требований Invoke в вызовах сквозных потоков
- 11. Как избежать нарушений сквозных потоков в расширении Ruby?
- 12. VB.NET код для запуска нескольких потоков
- 13. Рисунок вставки для сквозных нитей
- 14. Функция вызова Перекрестная резьба в C#
- 15. Форма VB.NET Высота Вопрос
- 16. Функции вызова из потоков
- 17. VB.net форма не отвечает
- 18. Редактирование управления редактированием сквозных нитей
- 19. имеет много сквозных флажков?
- 20. избежать класса для вызова из несинхронизированных потоков
- 21. Динамическая форма ASP.NET VB.NET
- 22. VB.NET Форма прозрачный фон
- 23. Vb.net - HTMLDocument замерзает форма
- 24. форма не определена VB.NET
- 25. VB.net Форма неопровержимо заканчивается
- 26. VB.NET - Форма застревает
- 27. Форма позиции VB.net
- 28. Более короткая форма для объектов VB.net?
- 29. Форма без полей, VB.NET для C#?
- 30. Перекрестная компиляция для RISCV
Не видя какого-то кода, было бы трудно сказать. – OneFineDay
Я запускаю UdpClient в отдельном потоке, который запущен в форме с именем Server, я хочу сказать, изменить название формы 'Main' из отдельного потока в форме с именем Server. – Orion
Форма сервера может поднять событие, которое прослушивает Main. Вам нужно будет делегировать работу обратно в поток пользовательского интерфейса. – OneFineDay