2011-02-19 12 views
1

一定の時間(30秒)以内にイベントを待つ必要があり、この時間が経過するとタイムアウトする必要があります。私は何をする必要がありますか?vb.netのDLLでタイマーを使用

dllからサーバーにコマンドを送信しています。応答を待ってから別のサーバーに送信する必要があります。タイムアウト機能を実装したいのですが、なぜタイマを使用する必要がありますか?

私はタイマーを使いたいのですが、DLLでどのように使用するのか分かりません。

+0

タイマーはタイマーです。それがDLLに入っているかどうかは重要ですか?現時点で私はあなたの問題が何かを見ることができないので、あなたのアプリの部分がどのようにフィットしているかについて、より詳細をいくつか教えてください。 –

+0

@David Heffernan dllからサーバーにコマンドを送信しています。応答を待ってから別のコマンドを送信する必要があります。私はタイムアウト機能を実装したい – Smith

答えて

2

時間の間隔を表現するためにタイマーを使用すると、一般的に悪い考えである理由コードのこの小さな作品は示して

Dim WithEvents myTimer As New Windows.Forms.Timer 'a timer 
Dim stpw As New Stopwatch 
Dim count As Long 

Const intervalValue As Integer = 1000 'some number of ms. s/b > 10 

Private Sub myTimer_Tick(ByVal sender As Object, _ 
         ByVal e As System.EventArgs) Handles myTimer.Tick 
    count += 1 
    Dim foo As Long = count * intervalValue 'the interval using tick firing every intervalValue ms. 
    Dim bar As Long = stpw.ElapsedMilliseconds 'the actual amount of time that has passed 

    Label1.Text = foo.ToString("n0") 
    Label2.Text = bar.ToString("n0") 

    Label3.Text = (bar - foo).ToString("n0") 'show error 
End Sub 

Private Sub Form1_Shown(ByVal sender As Object, _ 
         ByVal e As System.EventArgs) Handles Me.Shown 

    myTimer.Interval = intervalValue 'number of ms. 
    myTimer.Start() 
    stpw.Start() 

End Sub 

より良い方法は、あなたのための1秒を言って、いくつかの小さな値にタイマーを設定することです例を見て、経過時間があなたが探している値よりも大きいかどうかを確認してください。

+0

メールを送信するためにsmtpサーバに接続していますが、クラスライブラリのUIをフリーズすることなくレスポンスを待つ方法 – Smith

+0

あなたが示したコードが何かを考え出すのではなくあなたはちょうど私に言うことができますか?あなたは 'タイマー'が決議が保証されていないと言っていますか?あなたが期待する以上の時間がかかるかもしれませんか?うん、それはかなりよく知られていると思った。タイマーコントロールを使用することは禁忌です。値を正しく確認する必要があります。 –

+0

SMTPクライアントを使用している場合、ブロックされない送信非同期メソッドがあります。 @cody - それはかなりよく知られています。 – dbasnett

5

.NET - System.Windows.Forms.Timer,System.Threading.TimerおよびSystem.Timers.TimerおよびSystem.Windows.DispatcherTimerには4つのタイマーがあります。

実行可能ファイルだけでなくクラスライブラリからも使用できますが、状況に応じて最適なものを選択する必要があります。これはあまり明確ではありません。

UIスレッド内で実行する予定の場合は、適切なUIベースのタイマーを使用する必要があります。そうでなければ他の1つ。より多くの情報を提供することができれば、より多くの情報を手に入れることができます。

関連する問題