Thread

Snippet

using System.Threading;

public class MyThread : IDisposable
{
    private bool disposed;

    private Thread thread;

    public MyThread()
    {
        this.disposed = false;

        this.thread = new Thread(new ThreadStart(this.threadBody));
        this.thread.Start();
    }

    private void threadBody()
    {
        // この関数の中が新しいスレッドで実行される
        // Thread.Abort が呼び出されると、このスレッド内で ThreadAbortException が発生する。
        try
        {

        }
        catch (ThreadAbortException ex)
        {
            // スレッド終了時にはここが呼び出される
            // 終了処理をここに書く
            return;
        }
    }



    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (this.disposed)
        {
            return;
        }

        this.disposed = true;

        if (disposing)
        {
            try
            {
                this.thread.Abort();
            }
            catch (Exception)
            {
            }
        }
    }
}

参考資料