首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从其他函数访问线程名?

如何从其他函数访问线程名?
EN

Stack Overflow用户
提问于 2011-11-04 21:45:28
回答 3查看 218关注 0票数 2

我想从同一个类中的其他函数访问线程。例如

代码语言:javascript
复制
private void timer1_Tick(object sender, EventArgs e)
{
    Thread thread1 = new Thread(new ThreadStart(Send1));
    thread1.Start();
}

private void stop_btn_Click(object sender, EventArgs e)
{
     thread1.Stop();
}

我想从stop_btn_Click事件访问thead1。这两个函数都在同一个Form1类中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-04 21:46:53

在类级别而不是方法级别声明private Thread thread1;

代码语言:javascript
复制
class ClassName
{
    private Thread workerThread = null;

    private void timer1_Tick(object sender, EventArgs e)
    {
        this.workerThread = new Thread(new ThreadStart(Send1));
        workerThread.Start();
    }

    private void stop_btn_Click(object sender, EventArgs e)
    {
         this.workerThread.Stop();
    }
}

通过查看方法名timer1_Tick(),我可以假设您正在模拟一个计时器行为。看一下System.Timers.TimerSystem.Threading.Timer类,也许您会发现它们对您的情况更有用。

票数 5
EN

Stack Overflow用户

发布于 2011-11-04 21:47:00

您需要将线程存储在表单的私有字段中。

您还需要弄清楚如果用户单击Start两次会发生什么情况;您可能希望检查线程是否已经在运行,或者使用线程列表。

票数 2
EN

Stack Overflow用户

发布于 2011-11-04 21:47:03

您可以将变量放在方法之外(将其作为字段移动到类中):

代码语言:javascript
复制
private Thread thread1 = null;

void timer1_Tick(object sender, EventArgs e)
{
    thread1 = new Thread(new ThreadStart(Send1));
    thread1.Start();
}


private void stop_btn_Click(object sender, EventArgs e)
{
    if (thread1 != null) 
         thread1.Stop();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8010116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档