首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能在中途阻止另一艘潜艇?VB

是否有可能在中途阻止另一艘潜艇?VB
EN

Stack Overflow用户
提问于 2022-04-01 08:21:17
回答 1查看 61关注 0票数 0

我正在用vb做表格,我有一个过程,我需要能够在任何时候切断它,就像紧急停止,然后能够恢复它。我已经成功地为实际的交通灯(它需要能够被切断)的代码,虽然它是非常重复的,我只是刚刚开始编码,所以道歉。

现在看起来就像这样

代码语言:javascript
复制
Public Class Form1
Dim x = True

    Private Async Sub btn_start_Click(sender As Object, e As EventArgs) Handles btn_start.Click

        While x

            If Not x Then
                Exit While
            End If
            Await Task.Delay(5000)
            SB_yellow.BackColor = Color.Yellow
            If Not x Then
                Exit While
            End If
            Await Task.Delay(3000)
            SB_green.BackColor = Color.Green
            SB_yellow.BackColor = Color.White
            SB_red.BackColor = Color.White
            If Not x Then
                Exit While
            End If
            Await Task.Delay(10000)
            SB_green.BackColor = Color.White
            SB_yellow.BackColor = Color.Yellow
            If Not x Then
                Exit While
            End If
            Await Task.Delay(3000)
            SB_yellow.BackColor = Color.White
            SB_red.BackColor = Color.Red
            If Not x Then
                Exit While
            End If
            Await Task.Delay(5000)
            SA_yellow.BackColor = Color.Yellow
            If Not x Then
                Exit While
            End If
            Await Task.Delay(3000)
            SA_red.BackColor = Color.White
            SA_yellow.BackColor = Color.White
            SA_green.BackColor = Color.Green
            If Not x Then
                Exit While
            End If
            Await Task.Delay(10000)
            SA_green.BackColor = Color.White
            SA_yellow.BackColor = Color.Yellow
            If Not x Then
                Exit While
            End If
            Await Task.Delay(3000)
            SA_yellow.BackColor = Color.White
            SA_red.BackColor = Color.Red

        End While
    End Sub

 Private Sub btn_stop_Click(sender As Object, e As EventArgs) Handles btn_stop.Click
        x = False
        MsgBox("stop")
    End Sub
End Class

SB和SA是设置和设置交通灯。

目前,当我运行我的表单,我按btn_stop,它等待直到它完成改变交通灯的另一种颜色,然后它停止时间循环。我以前使用过threading.thread.sleep(),但是我去掉了它,因为它关闭了UI,所以我最终使用了await,现在它可以工作,但我不确定如何在可能的情况下切断代码/暂停它。我选择了一个while循环,因为我想不出另一种方法来创建代码循环。

对于进一步的上下文(万一有帮助),我的任务要求我们制作一个程序,运行一系列预先确定的交通灯,用于设置a和设置b,然后能够覆盖它,以便在发生“紧急情况”时将两组信号灯设置为红色,然后安全地重新启动信号灯。最后,开发一个可以控制交通灯的移动应用程序。

·为设置A交通灯提供正确的操作顺序。为设置B交通灯提供正确的操作顺序。提供一种选项,以覆盖操作序列并将两组交通灯更改为红色,例如,当交付车辆需要进入或离开修理区域时,停止道路工程两侧的所有交通。能够安全地重新启动交通灯操作序列,例如在超驰触发之后或在任何其他时间。·开发一款可远程控制交通灯的移动应用程序。在开发软件解决方案系统时,您应该考虑增强的用户体验以及它将如何处理可能发生的任何意外事件。

目前在墙上,不知道该怎么做。我知道我可以清理代码,让它看起来更好看,这只是第一个草稿/尝试,我并不打算走到这一步。任何帮助都是非常感谢的!以及任何需要培养的技巧或习惯。

EN

回答 1

Stack Overflow用户

发布于 2022-04-01 16:41:37

我假设您可以访问计时器控制,因为您正在创建一个表单。我想用它会对你有帮助。

我更改了x,使一个计数器持续几秒钟,在确定当前时间时,它将是有用的。

代码语言:javascript
复制
Dim x As Integer = 0

Private Sub btn_start_Click(sender As Object, e As EventArgs) Handles btn_start.Click
    Timer1.Interval = 1000
    Timer1.Start()
End Sub

停止按钮将停止计时器,重置计数器,并将交通灯设置为停止。

代码语言:javascript
复制
Private Sub btn_stop_Click(sender As Object, e As EventArgs) Handles btn_stop.Click
    Timer1.Stop()
    x = 0
    SB_green.BackColor = Color.White
    SB_green.BackColor = Color.White
    SB_red.BackColor = Color.Red

    SA_green.BackColor = Color.White
    SA_yellow.BackColor = Color.White
    SA_red.BackColor = Color.Red

    MsgBox("stop")
End Sub

计时器将设置交通灯的颜色,取决于您设置的颜色。

case语句仅为占位符。我认为在这种情况下使用case语句不是最好的,因为延迟是不可自定义的

代码语言:javascript
复制
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    Select Case x
        Case 0
            SB_green.BackColor = Color.Green
            SB_yellow.BackColor = Color.White
            SB_red.BackColor = Color.White
            SA_green.BackColor = Color.White
            SA_yellow.BackColor = Color.White
            SA_red.BackColor = Color.Red
        Case 6
            SB_green.BackColor = Color.White
            SB_yellow.BackColor = Color.Yellow
            SB_red.BackColor = Color.White
            SA_green.BackColor = Color.White
            SA_yellow.BackColor = Color.Yellow
            SA_red.BackColor = Color.White
        Case 9
            SB_green.BackColor = Color.White
            SB_yellow.BackColor = Color.White
            SB_red.BackColor = Color.Red
            SA_green.BackColor = Color.Green
            SA_yellow.BackColor = Color.White
            SA_red.BackColor = Color.White
        Case 13
            x = 0
            Exit Sub
    End Select

    x += 1

End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71703876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档