とっておきの手土産を教えて

すいません、VB.Net2003の初心者です。
いろいろ調べたのですが解らないので教えてください。
VB.Net2003 SQLServer2000という環境なんですが
Form1に
Private Sub Timer1_Tick(・・・
lblMessage.Visible = Not lblMessage.Visible
End Sub
Private Sub Form1_Load(・・・
Me.Timer1.Start()
End Sub
と書いて単独で開くとちゃんとメッセージは点滅するのですが、これに
Private Sub From1_Activated(・・・
Dim Form2Form As New Form2
Application.DoEvents()
Dim strSQL As String
Dim intRemainder(4) As Integer
Dim i As Integer
For i = 1 To 3
strSQL = "SELECT COUNT(TelW) AS RemainderCount "
strSQL &= "FROM dbo.ma_Customer "
strSQL &= "WHERE (CallDayNo1 IS NULL) AND "
strSQL &= "(CallNo" & i & " > 0)"
Try
cmd = New SqlCommand(strSQL, Cn)
intRemainder(i - 1) = cmd.ExecuteScalar
Catch ex As Exception
Dim strMsg As String = Err.Number & ex.ToString
MessageBox.Show(strMsg)
End Try
cmd = Nothing
Next
Me.Hide()
With Form2Form
.lblNo1.Text = intRemainder(0).ToString("#,##0")
.lblNo2.Text = intRemainder(1).ToString("#,##0")
.lblNo3.Text = intRemainder(2).ToString("#,##0")
.ShowDialog()
End With
Me.Close()
End Sub
というコードを加えてループ処理を実行している間メッセージを点滅させたいのですが点滅しません。どう書いたら良いのでしょう?

A 回答 (1件)

残念ながら、Timerコントロールでは、他の処理を実行している間に並行して処理を行う事は出来ません。



なので、スレッド処理を行って点滅させる必要があります。
下に重い処理をしながら、ラベルを点滅させる処理を書いておいたので、それにSQLの実行処理を加えて下さい。
Public Class Form1
Inherits System.Windows.Forms.Form

(略)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cls別処理 As New Class別処理
Dim thre重い処理 As New System.Threading.Thread(AddressOf cls別処理.重い処理)

'スレッド実行
thre重い処理.IsBackground = True
thre重い処理.Start()

'本体はループする
While (cls別処理.処理中)
Me.Label1.Visible = Not Me.Label1.Visible
Application.DoEvents()
System.Threading.Thread.Sleep(100)
End While

'終了MSG
MessageBox.Show("終了しました。結果は" & cls別処理.int結果.Tostring)
End Sub
End Class

Public Class Class別処理
Private bln処理中 As Boolean = True
Public ReadOnly Property 処理中() As Boolean
Get
Return bln処理中
End Get
End Property
Public int結果 as integer

Public Sub 重い処理()
'重たい処理を記述する
System.Threading.Thread.Sleep(5000)
'処理終了時に、フラグと値を返す。
bln処理中 = False
int結果 = 10
End Sub
End Class
    • good
    • 0
この回答へのお礼

ありがとうございます!!!
助かりました。

お礼日時:2006/05/23 19:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報