Автор вопроса: Starkiller | Web-сайт:google.ru/ | ICQ: 123123
Уже весь инет облазил не знаю что делать.
Imports System.Text
Imports System.Threading
Public Class Form1
Dim potoc1 As New Thread(AddressOf con1)
Public WithEvents i1 As New мой_контролл
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
potoc1.Start()
End Sub
Public Sub con1()
i1.login(тут_параметры)
End Sub
[B]Private Sub i1_connected() Handles i1.connected
MsgBox("connect")
End Sub[/B]
Private Sub i1_fl_error(ByVal code As Integer) Handles i1.fl_error
MsgBox("Error: " & code)
End Sub
End Class
Как обратится к контролу, который создал главный поток?:
К контролу, который находится в главном потоке обращаются через делегаты. Поищи в интернете делегирование или делегаты в потоках. На прямую к главному потоку нельзя обращаться из другого потока - в таких ситуациях использует делигаты - смысл их в том, что они исполняют то или иное действие в главном потоке тогда, когда это возможно.
Вот примерчик про потоки, я делал когда изучал их. На форму добавь листвьюв и добавь этот код и увидишь его в действии, но разжевать ты его должен сам.
Imports System.Threading
Imports System.IO
PublicClass Form1
Dim bgThread As Thread
PublicDelegateFunction AddANode(ByVal aString AsString) As TreeNode
Sub ScanFolder(ByVal folderSpec AsString, ByRef currentNode As TreeNode)
И в ходе работы на втором инвоке вылетатет - "Cross-thread operation not valid: Control 'lv_List' accessed from a thread other than the thread it was created on."
Как сделать, чтобы работало?
Ну если честно то в коде влом разбираться, но история всё та же, обращаешься к главному потоку неправельно - а вот это неправильно ты должен сам найти.
В потоках как говорится камней подводных немеренно.
Неправильно? Вроде как положено через инвок и делегаты.....
На прикол в том, что начинал с 1 ивока - всё работало, а вот сделал 2мя чё-то вот неполучается