• 締切済み

Timerの割り込みイベントをつくりたい

以前VB .NetでSystem.Timers.Timerのことで質問したものです。 今回、作り直そうと思っているので書き込みました。 したいことは・・・ 1.タイムアウトを3回して電文がこない場合はエラーを返す。 2.タイムアウト内に電文がきた場合はタイマーを中止し、電文処理をする 上記をするにはどうしたら良いですか? 作成にあたりポイントなどありましたら教えて下さい。 よろしくお願いします。

みんなの回答

回答No.1

すいません。 補足もらっているの気づきませんでした。 m(_ _)m http://okweb.jp/kotaeru.php3?q=1287979

関連するQ&A

  • .Netのタイマーについて

    現在system.timers.timerを使用しています。 仕様としては、タイムアウト内に電文がこなければ再送するというものです。 Timerの使い方はわかったのですが、その途中で電文受信のイベントを走らすことって無理なのでしょうか? 今、わからないのはタイムアウトになるのを待ってから受信イベントが走っているので、 どうにかタイマーが動いている時でも中止して受信イベントを走らせたいです。 何か方法はありますか? また、どういうふうにした方がいいとかあれば教えてください。 わかりにくい説明になったと思いますがよろしくお願いします。

  • .NetのTimerについて

    Timerを使用して5秒までに応答電文がこなかったらエラーメッセージを出すプログラムを作成しています。 .Netは初心者なものでTimerの使い方がよくわかりません。 クラスからTimerを動かすことはできないのでしょうか? 作成しているプログラムはFormがいらないので、TimerだけFormにおいて非表示で使おうかなと思っています。 どうしたらよいでしょうか? また、この場合だとTimerではない方がいいですか?

  • スレッドでWM_TIMERを受け取れない

    スレッドの中でタイマー処理を行いたいのですが、WM_TIMERが受け取れません。 というか、メッセージマップ内でON_WM_TIMER()と記述すると、型が違うとエラーが出てしまいます。 どなたか、スレッド内でタイマー処理を行うすべを教えて下さい。よろしくお願いします。 CWinThreadを派生したクラス内での処理です。

  • Timerについて教えて下さい

    ある処理を5秒おきに、n回だけ実行したいのですが、「n回」をどのように実現したらよいのかわかりません。Timerクラスのメソッドにはないようなのですが。。簡単なサンプルコードを書いてみましたので以下を元に修正方法を教えて頂けると助かります。 import java.util.Timer; import java.util.TimerTask; public class TimerTest { public static void main(String[] args) { int n=10; Timer timer = new Timer(); timer.schedule(new sendTask(), 5000, 5000); } } class sendTask extends TimerTask { public void run() { System.out.println("Hello World"); } }

    • ベストアンサー
    • Java
  • TIMERについて

    VB6.0 SP5での質問です フォーム一つのみをもつ、 単純なプログラムがあるとします。 (1)フォームにはTimerオブジェクトが貼り付けてあり 1秒ごとに、イベントが起きるようにします。 (2)それと同じ構造のプログラムをもうひとつ作ります。 (1)のフォームから(2)のプログラムを読み出す ボタンを追加します。 EXEファイルを作成します。 (1)の(2)を読み出すボタンを押して(2)を起動した時に、 (1)で動いているTimerは一体どうなるのでしょうか? (2)のEXEが開いているうちも、動きつづけるのでしょうか? 一つのプロジェクトの中に2つのフォームがあった場合 だと、2つ目のフォームを開いていても、 1つめのフォームrのTimerは動いているようでした。 別EXEの場合はどうなるのでしょうか? どなたか至急教えてください。お願いします。

  • VB タイマーコントロールをインデックスを使用し130個作成しました。

    VB タイマーコントロールをインデックスを使用し130個作成しました。 タイマーイベントの表記はどのようにするのでしょうか。 Private Sub Timer(0)_Timer()  ~ End Sub とするとエラーになります。タイマーコントロールのインデックスの使い方が分かりません。よろしくお願いします。

  • VB2005 でLOOP処理を一定時間経過したら抜けさせる方法

    VB2005の初心者です。 標準モジュールで、Loop処理で一定時間経過したらLoopを抜ける処理を作りたいのですが、どうすれば良いのでしょうか。 Formではないため、System.Windows.Forms.Timerは使えません。 標準モジュールなので、System.Timers.Timer を使うのかと思ったのですが、Intervalで設定した時間が経過したことをどのように知ることができるのでしょうか。 ソースは下記のような単純なループです LtimTimer = New Timers.Timer LtimTimer.Interval = 60000 LtimTimer.AutoReset = False LtimTimer.Enabled = True Do If '設定時間が経過' Then Exit Do End If 反復処理 Loop '設定時間が経過' 部分に、どのように書けば良いのでしょうか。 何かヒントになるようなことでも良いので、 皆様の知恵をお借りできれば幸いです。 よろしくお願い致します。

  • C#のTimerについて

    こんにちは。 C#のプログラミングについてわからないところがありますのでご回答いただければと思います。 私はC#を用いて簡単な計算ゲームを作成しています。 その計算ゲームには対戦相手がおり、対戦相手の正解数はTimerを用いてユーザーに練習問題を解かせた時の解答時間を基に勝手に正解数が増えていくといったシステムにしています。 そこで1つ解決できない問題が浮上しました。 対戦相手の数を4人にして4人バラバラに解答しているような動きにしたいため、Timerを4つ設けそれぞれを動かせるようなプログラムを作成しました。 エラーもなく普通に実行できます。 しかしTimer1とTimer2は正常に動き対戦相手の正解数が増えていくのですが、Timer3とTimer4が全く反応していないのか、動かず、対戦相手の正解数が増えません。 プログラムの内容はTimer1~Timer4も対応する変数が違うこと以外一緒です。 原因は何であるかわかる方教えてください! C#ではTimerの使用数が2つまでとなっている?ってことなのでしょうか? スレッドを用いる方法もあると思いますが、Timerを4つ並べてそれぞれを動作させる方法があるのでしたら是非教えてください。 最後になりましたが、わかりにくい文章で本当に申し訳ありません。 よろしくお願いします。

  • Tickイベントについての質問

    1秒間のループ回数を得るために下記のようなコードを記述したのですが、Tickイベントが発生せずループから抜けません。以前はVB6(Timer1_Timerイベント)を使用していたのですが、何の問題もなく使用出来ていました。誰か分る方、ご教授下さい。もちろんInterval=1000です。 '1sec間に繰り返されるループ回数 Private mlng1SecTimeCount As Long '1sec経過フラグ Private msht1SecFlg As Short '(省略) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'ディレイタイム設定 DELAY_TIME_SETTING() End Sub Private Sub DELAY_TIME_SETTING() 'ディレイタイム設定 '解説:1sec間に実行されるループ回数の算出。 'ループ回数格納用変数 Dim lngLoopCount As Long 'タイマー1起動 Timer1.Enabled = True Do Until msht1SecFlg = 1 lngLoopCount += 1 Loop 'タイマー1停止 Timer1.Enabled = False 'データ保存 mlng1SecTimeCount = lngLoopCount End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick '解説:1sec経過後にインクリメント。 'インクリメント msht1SecFlg += 1 End Sub 以上よろしくお願い致します。

  • Timerのカウントダウンのしかたを教えて下さい!

    カウントダウンさせるプログラムを作っているのですが、「Timer」を使用して「1秒毎」にカウントダウンさせていきたいんですけど「テキスト」内の数値を[0・・59・・58・・」の順にカウントさせることは可能ですか? 現時点では「Timer」を設置してボタン操作でカウントを始めるプログラムを書きましたが、どうも計算がうまくいきません。 Public Class Form1 Private SecCount As Integer ' 秒数をカウントする整数 Private Count As Integer Private WaitSecond As Integer ' タイマーの停止時間を秒単位で記憶する変数 ' [START]ボタンを押した時に実行する処理 Private Sub DoConvert(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click Dim WorkingMinute, WorkingSecond As Integer Dim WorkingHour As Integer Dim Smhplass As Integer ' 時間をカウントする変数 ' 入力された時間と分と秒を数値に変換 WorkingHour = numHour.Value WorkingMinute = numMinute.Value WorkingSecond = CInt(txtSecond.Text) ' 指定されたタイマーを秒単位で記憶 WaitSecond = WorkingHour * 60 + WorkingMinute * 60 + WorkingSecond ' 指定されたタイマー停止時間が 0 秒のときは開始処理をキャンセル If WaitSecond = 0 Then Exit Sub End If ' 秒数のカウントと表示をテキスト内の表示にに初期化 SecCount = WorkingHour + WorkingMinute Count = 0 ' カウンターを処理する変数 Smhplass = WorkingSecond + WorkingMinute + WorkingHour ' numからテキストに表示 txtHour.Text = WorkingHour.ToString() txtMinute.Text = WorkingMinute.ToString() ' [START]ボタンを無効化 btnStart.Enabled = False ' タイマーを開始 Timer1.Start() ' 表示画像の変更 lblStandby.Text = "START" End Sub ' 指定したミリ秒毎に実行される処理 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim Smhplass As Integer ' 時間をカウントする変数 Dim WorkingHour, WorkingMinute, WorkingSecond As Integer ' テキストをIntに変える変数 WorkingHour = CInt(txtHour.Text) WorkingMinute = CInt(txtMinute.Text) WorkingSecond = CInt(txtSecond.Text) ' カウンターを処理する変数 Smhplass = WorkingHour - WorkingMinute - WorkingSecond ' タイマーカウント行う処理 SecCount = SecCount - 1 Smhplass = SecCount If SecCount = WaitSecond Then ' 表示画像を変更 lblStandby.Text = "STANDBY" ' タイマーを停止 Timer1.Stop() ' [START] ボタンを有効化 btnStart.Enabled = True End If End Sub End Class 上記がボタンを押した時の処理とタイマーイベント(Tick)が行う処理の記述のつもりなのですが、ここからどういう計算方式で「0・・59・・58」の順に減らしていくのかわかりません(ι・_・) デザインではテキストが「時間・分・秒」の順に表示される様に設定しています、そこに表示させたテキストの「分・秒」を先ほどの計算式で逆算していきたいです。 たとえば1時間に設定したら「秒」のカウントは「59」から始まり「分」はそれに伴って秒が60カウントをした「1分」ずつ減っていくような感じです。 Name設定を変えているのでボタンやテキストの表記が多少変わっていて読みにくいかもしれませんが「ボタン」なら「btn~」、テキストなら「txt~」で名前をつけています。 長くなってしまいましたが、もしいい方法があれば是非ご伝授の方よろしくお願いします。

専門家に質問してみよう