質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

2442閲覧

VB.netのタイマーが終了できない

退会済みユーザー

退会済みユーザー

総合スコア0

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/09/19 06:16

前提・実現したいこと

vb.netの超初心者です。
vb.netのTimer_TickでFelicaの読み取りを行い、
idmを読み取り次第、データベースのプロパティを更新して
"処理が終わりました"とのメッセージボックスを表示させて
Timer_Tickが終了するようなコードを作りたいです。

発生している問題・エラーメッセージ

現状のコードでは、なぜかTimer_Tickが終了してくれず、メッセージボックスを何個も何個も生成してしまいます。

エラーメッセージ

該当のソースコード

vb.net

1 Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick 2 Dim r_name As String 3 Dim code As String 4 Dim sResult As String 5 Dim msg As String 6 Dim command As NpgsqlCommand 7 '-------------------- 8 ' Felicaの情報を取得 9 '-------------------- 10 msg = dump() 11 12 Dim conn As NpgsqlConnection = New NpgsqlConnection("---";) 13 conn.Open() 14 code = "Select name FROM list WHERE id Like '" & dump & "';" 15 command = New NpgsqlCommand(code, conn) 16 sResult = command.ExecuteScalar() 17 r_name = sResult 18 t_name.Text = r_name 19 conn.Close() 20 21 If t_name.Text <> "" Then 22 conn.Open() 23 ''処理をします 24         conn.Close() 25 MsgBox("処理が完了しました") 26 Timer1.Enabled = False 27 Exit Sub 28 End If 29 End Sub 30''ソースコードは必要最低限度に省略しています

試したこと

Exit Sub()やApplication.Exit()などなど、いろいろ試して終了させようとしていますが、
結果は変わりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

crowmt

2020/09/19 06:26

メッセージボックスで処理が止まるので、タイマー止めてからメッセージを呼ぶでどうでしょうかね。
退会済みユーザー

退会済みユーザー

2020/09/19 06:33

すごいです!おっしゃるとおりにしたら、 直りました!!メッセージボックスで処理が止まるというのは初耳でした。 以後、参考にさせていただきます。
crowmt

2020/09/19 07:00

解決して何よりです。 このままだと未解決で残り続けるので、回答記載しておきます。 utukushizukiさんの判断で解決済にしておいてください。
guest

回答1

0

ベストアンサー

メッセージボックスで処理が止まるので、タイマー止めてからメッセージを呼ぶでどうでしょう。

処理する必要が発生した直後に止めないと、処理中に読み込みされても動いてしまうので、
マルチ処理をしなくてよければ、分岐直後に止めておいたほうがいいかもしれません。
メッセージ確認後にタイマーをONにすれば、次の読み込みもできるのではないかと思います。

VB.net

1(省略) 2 If t_name.Text <> "" Then 3 ' タイマー停止 4 Timer1.Enabled = False 5 conn.Open() 6''処理をします 7 conn.Close() 8 MsgBox("処理が完了しました") 9 10 ' タイマー開始 11 Timer1.Enabled = True 12 Exit Sub 13 End If 14(省略)

投稿2020/09/19 07:00

crowmt

総合スコア402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/09/24 23:14

ありがとうございました。 こんなに簡単に解決できるとは。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問