Консольное приложение с таймерами и Skype API - PullRequest
0 голосов
/ 05 сентября 2011

так что у меня проблема, когда я пытаюсь вызвать Skype API по таймеру, он ничего не получает, я просто пытаюсь читать сообщения в цикле и отображать их в моей консоли, но на таймере ничего не происходит. Но если я поставлю код таймера таймера в основной, он работает нормально. Вот мой код:

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 голосов
/ 05 сентября 2011

Таймеры поглощают исключения, возможно, вы получаете исключение в коде таймера, скорее всего, исключение между потоками. Попробуйте в настройках Visual Studio разбить на исключения (отладка> исключения) и посмотреть, получите ли вы что-нибудь.

Если вы получите исключение между потоками, вы не сможете использовать таймеры System.timer, поскольку они запускаются в пуле потоков. в этом случае вы должны использовать дружественный пользовательский таймер, например, из winforms / wpf, или выделенный поток

...