ik probeer data uit een klasse door te geven aan mijn form. Het lijkt mij dat dit ik dit bijvoorbeeld zo moet doen: form1.RichTextBox1.Text = "bla bla".
ik heb de volgende werkende code:
Met deze code haal ik de html codes van twee websites te gelijk op. Als curl een reactie voor mij heeft word de Public Shared Function OnWriteData uitgevoerd.
dit werkt allemaal prima want als ik bijvoorbeeld in Public Shared Function OnWriteData dit neerzet debug.writeline(System.Text.Encoding.UTF8.GetString(buf), krijg ik de html in mijn debug scherm.
maar ik krijg het maar niet in mijn RichTextBox... Wie ziet waar het fout gaat of hoe ik dit zou kunnen oplossen?
ik heb de volgende werkende code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
| class form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
Curl.GlobalInit(CURLinitFlag.CURL_GLOBAL_ALL)
dnsLock = New Object()
cookieLock = New Object()
Dim share As Share
share = New Share()
Dim lf As Share.LockFunction, ulf As Share.UnlockFunction
lf = New Share.LockFunction(AddressOf OnLock)
ulf = New Share.UnlockFunction(AddressOf OnUnlock)
share.SetOpt(CURLSHoption.CURLSHOPT_LOCKFUNC, lf)
share.SetOpt(CURLSHoption.CURLSHOPT_UNLOCKFUNC, ulf)
share.SetOpt(CURLSHoption.CURLSHOPT_SHARE, _
CURLlockData.CURL_LOCK_DATA_COOKIE)
share.SetOpt(CURLSHoption.CURLSHOPT_SHARE, _
CURLlockData.CURL_LOCK_DATA_DNS)
Dim t1 As Thread, t2 As Thread
et1 = New EasyThread("http://www.google.nl", share)
et2 = New EasyThread("http://www.google.com", share)
t1 = New Thread(New ThreadStart(AddressOf et1.ThreadFunc))
t2 = New Thread(New ThreadStart(AddressOf et2.ThreadFunc))
t1.Start()
t2.Start()
t1.Join()
t2.Join()
share.Cleanup()
Curl.GlobalCleanup()
Catch ex As Exception
Console.WriteLine(ex)
End Try
end class
Public Class EasyThread
Private Shared wf As Easy.WriteFunction
Private url As String
Private share As Share
Shared Sub New()
wf = New Easy.WriteFunction(AddressOf OnWriteData)
End Sub
Public Sub New(ByVal s As String, ByVal shr As Share)
Debug.WriteLine("EasyThread instance constructor: url={0}", s)
url = s
share = shr
End Sub
Public Sub ThreadFunc()
Dim easy As Easy
easy = New Easy()
easy.SetOpt(CURLoption.CURLOPT_URL, url)
easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf)
easy.Perform()
easy.Cleanup()
End Sub
'als er data van curl terug komt
Public Shared Function OnWriteData(ByVal buf() As Byte, ByVal size As Int32, ByVal nmemb As Int32, ByVal extraData As Object) As Int32
Form1.RichTextBox1.Text = Form1.RichTextBox1.Text & System.Text.Encoding.UTF8.GetString(buf)
'Return size * nmemb
End Function
End Class |
Met deze code haal ik de html codes van twee websites te gelijk op. Als curl een reactie voor mij heeft word de Public Shared Function OnWriteData uitgevoerd.
dit werkt allemaal prima want als ik bijvoorbeeld in Public Shared Function OnWriteData dit neerzet debug.writeline(System.Text.Encoding.UTF8.GetString(buf), krijg ik de html in mijn debug scherm.
maar ik krijg het maar niet in mijn RichTextBox... Wie ziet waar het fout gaat of hoe ik dit zou kunnen oplossen?