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

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

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

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

Q&A

解決済

2回答

16354閲覧

[VB.NET] フォームを起動させたまま処理を中断したい。

inukujira

総合スコア130

VB.NET

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

0グッド

0クリップ

投稿2015/06/10 04:18

1つのフォームがあります。
例として、以下のソースを実行した場合、bのプロシージャで
フォームごと"end"で閉じられてしまいます。
仮に"Exit sub"すると、aのプロシージャに処理が戻ってしまいます。

フォームを起動させたまま、bで処理を中断させたいです。

lang

1Sub a() 2 Call b() 3End Sub 4 5Sub b() 6 end 7End Sub

よろしくお願いします。

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

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

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

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

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

Tak1wa

2015/06/10 04:23

質問させてください。ここで言う中断とはaプロシージャの終了を指していますか?それとも別途再開という概念のもと、aプロシージャの再開も行う必要がありますか?(一時中断?)
inukujira

2015/06/10 04:27

aプロシージャの終了という事です。 再び実行するには、またaプロシージャの処理を行う必要があります。
guest

回答2

0

ベストアンサー

aプロシージャの終了を行いたいのであれば、
以下のようにbを結果を受けてaの処理を制御するのが基本だと思います。

lang

1Sub a() 2 If b() Then 3 Exit Sub 4 End If 5 '中断されなかった場合の処理 6End Sub 7 8Function b() As Boolean 9 Return True 10End Function

もしくは、あまり好まれるやり方ではないですが、例外ですっ飛ばす感じでしょうか…

lang

1Sub a() 2 Try 3 b() 4 '中断されなかった場合の処理 5 Catch ex As Exception 6 'hogehoge 7 End Try 8End Sub 9 10Function b() As Boolean 11 Throw New Exception() 12End Function

ご要望とずれている場合はもう少し考えてみますのでコメントをくださいませ。

投稿2015/06/10 04:27

編集2015/06/10 04:29
Tak1wa

総合スコア4791

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

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

inukujira

2015/06/10 04:31

ありがとうございます。 私も、bの返り値を見る方法を考えていましたが 仮にプロシージャ間の階層が深くなった場合に、毎回返り値をみる必要がでてくるので 出来れば簡潔にbプロシージャ内で処理を終了させたいです。 ------------------------------------- Private Sub Click(sender As Object, e As EventArgs) Handles Button1.Click Call a() End Sub Sub a() Call b() End Sub Sub b() end End Sub -------------------------------------
Tak1wa

2015/06/10 04:32

では、二つ目に提案した例外を使う方向になってしまいそうです…。
inukujira

2015/06/10 04:42

ありがとうございます。 結局、1つ目の提案でいくことにしました!^^ ------------------------------------- Private Sub Click(sender As Object, e As EventArgs) Handles Button1.Click Call a() End Sub Sub a() If Not a() Then Exit Sub End Sub Function b() As Boolean Return False End Function -------------------------------------
guest

0

無限ループとDoEventsを利用するのはダメなんですか?

投稿2015/06/10 04:25

orange0190

総合スコア1698

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

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

orange0190

2015/06/10 04:28

全然違う意味で質問を捉えてましたね。 無視してください。
Tak1wa

2015/06/10 04:31

「一時中断」という意味であればループの中で処理する方向になりそうですよね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問