0

だから私は問題があります、タイマーで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

ありがとう、アダム

4

1 に答える 1

0

タイマーは例外を飲み込みます。タイマー コードで例外が発生している可能性があります。クロス スレッド例外である可能性が最も高いです。Visual Studio を設定して例外 (デバッグ > 例外) を中断し、何かが得られるかどうかを確認してください。

クロス スレッド例外が発生した場合は、スレッド プールで実行される System.timer タイマーを使用できません。その場合、winforms/wpf のような UI フレンドリーなタイマー、または専用スレッドを使用する必要があります。

于 2011-09-04T20:40:18.733 に答える