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

发布于 2024-12-02 19:02:41 字数 807 浏览 1 评论 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

谢谢, 亚当

so i have a problem, when trying to call the Skype API on a timer it gets nothing, im just trying to read messages on a loop and display them in my console, but on timer tick, nothing happens. But if i put the timer tick code in main it works fine. Here is my code:

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

Thanks,
Adam

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

魂ガ小子 2024-12-09 19:02:41

计时器吞下异常,您可能会在计时器代码中遇到异常,很可能是跨线程异常。尝试设置 Visual Studio 以中断异常(调试>异常),看看是否得到任何结果。

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

Timers swallow exceptions, you might be getting an exception in the timer code, most likely a cross thread exception. Try settings visual studio to break on exceptions (debug > exceptions) and see if you get anything.

If you do get a cross thread exception, you wont be able to use System.timer timers as they run on the thread pool. in that case you should use a ui friendly timer such as the ones from winforms/wpf, or a dedicated thread

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文