[求解] 各位老师,在下有一个关于线程的有关问题

[求解] 各位老师,在下有一个关于线程的问题
对于这个问题,我就直接从他的产生说起:

我正在做一款小的软件,用来实践。他的主要功能就是:我点击第一个按钮,他启动a线程;当我点击第二个按钮时,他停止a线程的操作,并且重新启动a线程(线程里面的操作从头开始)。

而我的问题就是,不知道怎么写。

我之前尝试过一些简单的写法,但是都不行(我对线程了解的不多)

以下是我写过的一些方法:

dim a as thread =new thread (adress of abc)

private sub........点击1按钮响应的代码
a.start
end sub

private sub........点击2按钮响应的代码
a.abort '想要终止操作
a.start'想要重新启动操作
end sub
------解决方案--------------------
一个起码的原则是,不要去调用Thread.Abort、Resume、Supsend之类的方法。
你应该使用一个状态量表示是否应该停止线程,让线程自己去退出。
------解决方案--------------------
如果你对线程了解不多,不要胡乱用,这会导致很多严重的后果。先系统学习下:
http://msdn.microsoft.com/zh-cn/library/ms173178.aspx
http://msdn.microsoft.com/zh-cn/library/ms173179.aspx
------解决方案--------------------
给你写个 Console 程序的 demo:

Imports System
Imports System.ComponentModel

Module Module1

    Sub Main()
        Console.WriteLine("按A开始Proc,B创建/重新创建Proc,C结束")
        Dim obj As New ProcType
        AddHandler obj.PropertyChanged, AddressOf Obj_IsStoped_Changed
        Do
            Select Case Console.ReadKey.KeyChar.ToString().ToUpper()
                Case "A"
                    If obj.IsStoped Then obj.Start()
                Case "B"
                    If Not obj.IsStoped Then obj.StopIt()
                Case "C"
                    RemoveHandler obj.PropertyChanged, AddressOf Obj_IsStoped_Changed
                    If Not obj.IsStoped Then obj.StopIt()
                    Return
            End Select
        Loop
    End Sub

    Sub Obj_IsStoped_Changed(sender As Object, e As PropertyChangedEventArgs)
        If e.PropertyName = "IsStoped" Then
            Dim obj As ProcType = sender
            If obj.IsStoped Then obj.Start()
        End If
    End Sub

End Module

Imports System.Threading
Imports System.ComponentModel

Public Class ProcType
    Implements INotifyPropertyChanged

    Dim _Stoped As Boolean = True

    Public Property IsStoped As Boolean
        Get
            Return _Stoped
        End Get
        Set(value As Boolean)
            If value <> _Stoped Then
                _Stoped = value
                RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("IsStoped"))
            End If
        End Set
    End Property


    Public Sub Start()
        ThreadPool.QueueUserWorkItem(AddressOf Proc)
    End Sub

    Private Sub Proc(x As Object)
        Dim n As Integer
        IsStoped = False
        StopFlag = False
        Do Until StopFlag
            Console.Write(n)
            n += 1
            Thread.Sleep(1000)
        Loop