現在オフラインです。再接続するためにインターネットの接続を待っています

Visual Basic .NET または Visual Basic 2005 でスレッドを作成する方法

この記事は、以前は次の ID で公開されていました: JP315577
概要
この資料では、Microsoft Visual Basic .NET または Microsoft Visual Basic 2005 の Windows アプリケーションでスレッドを作成する方法について説明します。System.Threading 名前空間には、スレッドの処理で使用する必要があるクラスが用意されています。

必要条件

必要なハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および Service Pack は次のとおりです。
  • Microsoft Windows 2000 または Microsoft Windows XP
  • Microsoft Visual Basic .NET または Microsoft Visual Basic 2005
この資料は、次のトピックについて詳しい知識のあるユーザーを対象としています。
  • Visual Basic .NET のプログラミングまたは Visual Basic 2005 のプログラミング
  • Visual Studio .NET または Visual Studio 2005 の統合開発環境 (IDE)
  • デリゲートとスレッド処理に関する一般的な知識
  • Visual Basic .NET または Visual Basic 2005 に関する一般的な知識

スレッドを使用した Visual Basic .NET または Visual Basic 2005 のアプリケーションの作成

  1. Microsoft Visual Studio .NET または Microsoft Visual Studio 2005 を起動します。
  2. ThreadWinApp という名前の新しい Visual Basic Windows アプリケーションを作成します。
  3. フォームに Button コントロールを 1 つ追加します。このコントロールにはデフォルトで Button1 という名前が付けられています。
  4. フォームに ProgressBar コンポーネントを 1 つ追加します。このプログレス バーにはデフォルトで ProgressBar1 という名前が付けられています。
  5. フォームを右クリックし、[コードの表示] をクリックします。
  6. ファイルの先頭に次のステートメントを追加します。
    Imports System.Threading					
  7. 次の Button1 の Click イベント ハンドラを追加します。
    Private Sub Button1_Click( _    ByVal sender As System.Object, ByVal e As System.EventArgs) _    Handles Button1.Click    MessageBox.Show("This is the main thread")End Sub					
  8. Form1 クラスに次の変数を追加します。
    Private trd As Thread					
  9. Form1 クラスに次のメソッドを追加します。
    Private Sub ThreadTask()    Dim stp As Integer    Dim newval As Integer    Dim rnd As New Random()    Do        stp = ProgressBar1.Step * rnd.Next(-1, 2)        newval = ProgressBar1.Value + stp        If newval > ProgressBar1.Maximum Then            newval = ProgressBar1.Maximum        ElseIf newval < ProgressBar1.Minimum Then            newval = ProgressBar1.Minimum        End If        ProgressBar1.Value = newval        Thread.Sleep(100)    LoopEnd Sub						
    : これは、スレッドの基になるコードです。このコードは、ProgressBar1 の値をランダムに増減し、100 ミリ秒待機してから処理を継続する無限ループです。
  10. 次の Form1 の Load イベント ハンドラを追加します。このコードでは、新しいスレッドを作成し、作成したスレッドをバックグラウンド スレッドに設定した後、スレッドを開始します。
    Private Sub Form1_Load( _    ByVal sender As System.Object, ByVal e As System.EventArgs) _    Handles MyBase.Load    trd = New Thread(AddressOf ThreadTask)    trd.IsBackground = True    trd.Start()End Sub					

動作の検証

  1. アプリケーションをビルドして実行します。プログレス バーの値がランダムに変化します。これが、動作中の新しいスレッドに相当します。
  2. メイン スレッドが、プログレス バーの値を変更するスレッドから独立していることを示すには、フォーム上のボタンをクリックします。メッセージ ボックスに次のメッセージが表示されます。
    This is the main thread							
    入力せずに待機します。プログレス バーの値が変化し続けることを確認してください。

トラブルシューティング

より複雑なアプリケーションでは、共有変数にアクセスするときに複数のスレッドを同期する必要があります。詳細については、Visual Basic オンライン ヘルプ ドキュメントで、「SyncLock ステートメント」および関連トピックを参照してください。
multi-threaded
プロパティ

文書番号:315577 - 最終更新日: 10/03/2006 20:32:00 - リビジョン: 4.1

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbhowtomaster kbvs2005applies kbvs2005swept KB315577
フィードバック
error="var m=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">