と呼ばれるラベルとValve
と呼ばれるテキストボックスを使用するプログラムがありますVariable
要点は、Variable = 0
thenの場合、ラベルの色が灰色である場合、Variable = 1
thenの場合、ラベルは灰色と赤の間で点滅するスレッドを使用するということです。
これは、2つの値を非常にすばやく変更する場合(0を入力してから削除してから1を入力する場合など)を除いて、ほぼ完全に機能します。その後、スレッド速度が向上します(マルチスレッドのように)。
奇妙なことに、値0と1をゆっくりと(2秒ごとに+)交換しても、点滅速度は上がりません(これはプログラムが行う必要があることです)
これは、次の質問からの拡張コードです:vb.netマルチスレッド
注:これは、VisiWin.NET上の私のプロジェクトからの単なるVB.NET変換です。この例では、TextBoxVariable
はPLCから読み取られた実際の変数であり、ラベルValve
はプロセスフローシートの模倣からのプロセスソレノイドを表す三角形になります。すべてのソレノイドは、さまざまな変数によって制御されます。
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Threading
Imports System.Diagnostics
Public Class Form1
Private _flash As Boolean = False
Private Sub Variable1_TextChanged(sender As System.Object, e As System.EventArgs) Handles Variable.TextChanged
If Variable.Text = "1" And Not _flash Then
_flash = True
Dim FlashThread As New Thread(New ThreadStart(AddressOf FlashLabel))
FlashThread.Start()
End If
If Variable.Text = "0" Then
_flash = False
Valve.ForeColor = Color.Gray
End If
End Sub
Private Sub FlashLabel()
Dim _Color As Color = Color.Gray
While _flash
If Valve.ForeColor = _Color Then
Valve.ForeColor = Color.Red
Else
Valve.ForeColor = Color.Gray
End If
System.Threading.Thread.Sleep(2000)
End While
End Sub
End Class