0

所以我有一个问题,当尝试在计时器上调用 Skype API 时,它什么也得不到,我只是想在循环中读取消息并将它们显示在我的控制台中,但是在计时器滴答时,什么也没有发生。但是,如果我将计时器滴答代码放在 main 中,它就可以正常工作。这是我的代码:

Imports SKYPE4COMLib
Imports System.Timers.Timer

Module main

Dim oSkype As New SKYPE4COMLib.Skype
Dim aUser = oSkype.User("echo123")
Dim aChat = oSkype.Messages(aUser.Handle)

Dim tmr As New Timers.Timer

Sub Main()

    tmr.AutoReset = True
    tmr.Interval = 1000
    AddHandler tmr.Elapsed, AddressOf tmrTick
    tmr.Enabled = True
    Console.ReadLine()

End Sub

Public Sub tmrTick(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs)

        For Each aMessages In aChat
            Console.WriteLine(aMessages.FromHandle & ": " & aMessages.Body)
        Next
        Console.WriteLine("")

End Sub
End Module

谢谢,亚当

4

1 回答 1

0

计时器吞没异常,您可能会在计时器代码中遇到异常,很可能是跨线程异常。尝试设置视觉工作室以打破异常(调试>异常),看看你是否得到任何东西。

如果您确实遇到了跨线程异常,您将无法使用 System.timer 计时器,因为它们在线程池上运行。在这种情况下,您应该使用 ui 友好的计时器,例如来自 winforms/wpf 的计时器,或专用线程

于 2011-09-04T20:40:18.733 回答