トップ  >  サンプルソース  >  イベント送信/受信(C#/VB.NET)

イベント送信/受信(C#/VB.NET)

2010年10月29日

イベントを生成して送信および受信するサンプル(ソース/コード)です。Class1のスレッドからFrom1にイベントを(1秒毎に)送信するシンプルなサンプルです。

' -----------------------------------------------------------
' イベントを生成・送信・受信するサンプル(VB.NET/VS2005)
Public Class Form1
    ' イベントを受信するオブジェクト
    Private WithEvents EvtObj As Class1

    Private Sub Form1_Load( _
        ByVal sender As System.Object, _
        ByVal e As System.EventArgs) _
        Handles MyBase.Load

        ' イベントを受信するオブジェクトの生成
        EvtObj = New Class1()

        ' 1秒間隔でイベントを送信するスレッド開始
        EvtObj.Start_MyProc()
    End Sub

    Private Sub Form1_FormClosed( _
      ByVal sender As System.Object, _
      ByVal e As System.Windows.Forms.FormClosedEventArgs) _
      Handles MyBase.FormClosed

        ' 1秒間隔でイベントを送信するスレッド終了
        EvtObj.End_MyProc()
    End Sub

    ' イベントを受信するメソッド
    Private Sub EvtObj_MyEvt( _
        ByVal sender As System.Object, _
        ByVal e As Class1.MyEventArgs) _
        Handles EvtObj.MyEvt

        System.Diagnostics.Debug.WriteLine(e.dtm)
    End Sub
End Class

Public Class Class1
    ' 送信するイベントの定義
    Public Class MyEventArgs : Inherits EventArgs
        Public dtm As DateTime
    End Class
    Public Event MyEvt(ByVal sender As Object, _
                       ByVal e As MyEventArgs)

    ' イベントを送信するスレッド
    Private MyThread As System.Threading.Thread

    ' 1秒間隔でイベントを送信するスレッドを開始するメソッド
    Public Sub Start_MyProc()
        MyThread = New System.Threading.Thread( _
          New System.Threading.ThreadStart(AddressOf MyProc))
        If MyThread Is Nothing = False Then
            MyThread.Start()
        End If
    End Sub

    ' 1秒間隔でイベントを送信するスレッドを終了するメソッド
    Public Sub End_MyProc()
        If MyThread Is Nothing = False Then
            MyThread.Abort()
        End If
    End Sub

    ' 1秒間隔でイベントを送信するメソッド
    Private Sub MyProc()
        Do While (True)
            System.Threading.Thread.Sleep(1000)
            Dim e As New MyEventArgs()
            ' 現在の日時をイベント引数に設定
            e.dtm = Now
            RaiseEvent MyEvt(Me, e)
        Loop
    End Sub
End Class
' -----------------------------------------------------------

// ----------------------------------------------------------
// イベントを生成・送信・受信するサンプル(C#.NET/VS2005)
public partial class Form1 : Form
{
    // イベントを受信するオブジェクト
    private Class1 EvtObj;

    private void Form1_Load(
        object sender, EventArgs e)
    {
        // イベントを受信するオブジェクトの生成
        EvtObj = new Class1();
        EvtObj.MyEvt += EvtObj_MyEvt;

        // 1秒間隔でイベントを送信するスレッド開始
        EvtObj.Start_MyProc();
    }

    private void Form1_FormClosed(
        object sender, FormClosedEventArgs e)
    {
        // 1秒間隔でイベントを送信するスレッド終了
        EvtObj.End_MyProc();
    }

    private void EvtObj_MyEvt(
        System.Object sender, Class1.MyEventArgs e)
    {
        System.Diagnostics.Debug.WriteLine(e.dtm);
    }
}

class Class1
{
    // 送信するイベントの定義
    public class MyEventArgs : EventArgs
    {
        public DateTime dtm;
    }
    public delegate void MyEventHandler(
        object sender, MyEventArgs e);
    public event MyEventHandler MyEvt;
    protected virtual void OnMyEvt(MyEventArgs e)
    {
        if (MyEvt != null)
        {
            MyEvt(this, e);
        }
    }

    // イベントを送信するスレッド
    private System.Threading.Thread MyThread;

    // 1秒間隔でイベントを送信するスレッドを開始するメソッド
    public void Start_MyProc()
    {
        MyThread = new System.Threading.Thread(
            new System.Threading.ThreadStart(MyProc));
        if (MyThread != null)
        {
            MyThread.Start();
        }
    }

    // 1秒間隔でイベントを送信するスレッドを終了するメソッド
    public void End_MyProc()
    {
        if (MyThread != null)
        {
            MyThread.Abort();
        }
    }

    // 1秒間隔でイベントを送信するメソッド
    private void MyProc()
    {
        while (true)
        {
            System.Threading.Thread.Sleep(1000);
            MyEventArgs e = new MyEventArgs();
            // 現在の日時をイベント引数に設定
            e.dtm = DateTime.Now;
            OnMyEvt(e);
        }
    }
}
// ----------------------------------------------------------
スポンサーサイト

キーボード監視(C#/VB.NET) | トップページへ戻る | UDP/IP 送信/受信(VBS/VBA)

このページのトップに戻る

コメント

名前
題名
メールアドレス
WEBサイト
 
コメント
パスワード
  管理者にだけ表示を許可する

このページのトップに戻る

トラックバック

このページのトップに戻る