使用计时器和Skype API的控制台应用程序

时间:2011-09-04 20:07:58

标签: vb.net timer console skype4com

所以我有一个问题,当试图在计时器上调用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

谢谢, 亚当

1 个答案:

答案 0 :(得分:0)

定时器吞下异常,您可能在定时器代码中遇到异常,很可能是跨线程异常。尝试设置visual studio以打破异常(调试>例外)并查看是否有任何结果。

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