读书人

有关VB.NET中Addressof的有关问题

发布时间: 2012-01-16 23:36:51 作者: rapoo

有关VB.NET中Addressof的问题
Private Declare Function CreateThread Lib "kernel32 " ( _
ByVal lpThreadAttributes As Long, ByVal dwStackSize As Long, ByVal lpStartAddress As Long, _
ByVal lpParameter As Long, ByVal dwCreationFlags As Long, ByVal LpthreadId As Long) As Long

上面这个创建线程的API函数,在VB6中我可以这样调用它:
meTheard.Handle = CreateThread(LongNull, LongStackSize, AddressOf RunURL0, LongNull, LongCreationFlags, LpthreadId)

在.NET中它提示: "Addressof "表达式不能转换为 "Long ",因为 "Long "不是委托类型。

小弟我是刚从VB6转到.NET,还请大家多多指教。

[解决办法]
实例化个delegate,AddressOf RunURL0 处写委托变量
如:(仅供参考)
Delegate Sub MyDelegate(ByVal str As String)
...............

Dim mysub As New MyDelegate(AddressOf aaa)
...............
meTheard.Handle = CreateThread(LongNull, LongStackSize, mysub, LongNull, LongCreationFlags, LpthreadId)

...............

Private Sub aaa(ByVal str As String)

End Sub
[解决办法]
好像不是,AddressOf RunURL0是代理调用了一个过程,没有返回值,但是你的参数要求你返回一个Long类型,无法转换,不太明白为什么你的VB6能这么做
[解决办法]
see
System.Threading.Thread

读书人网 >VB Dotnet

热点推荐