首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

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

2012-01-16 
有关VB.NET中Addressof的问题PrivateDeclareFunctionCreateThreadLibkernel32 (_ByVallpThreadAttribute

有关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

热点排行