加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在WinForms C#中使用线程?

发布时间:2020-12-15 23:29:08 所属栏目:百科 来源:网络整理
导读:我有一个关于使用线程的问题.我在WinForms中有一个应用程序.我有一个带方法的开始按钮.当我点击它时,该方法开始执行并持续很长时间.当方法执行时,表单未激活,我甚至无法关闭它,直到方法结束.我想激活表单并单击另一个按钮(停止按钮)以停止执行方法. private
我有一个关于使用线程的问题.我在WinForms中有一个应用程序.我有一个带方法的开始按钮.当我点击它时,该方法开始执行并持续很长时间.当方法执行时,表单未激活,我甚至无法关闭它,直到方法结束.我想激活表单并单击另一个按钮(停止按钮)以停止执行方法.

private void start_Click(object sender,EventArgs e)
    {
        StartLoading() //Some Method which performing I want to stop at any time
    }

    private void stop_Click(object sender,EventArgs e)
    {
        //Stop performing Method from start_Click
    }

我试着使用下一个代码:

private void start_Click(object sender,EventArgs e)
    {
        Thread StartThread = new Thread(StartLoading);
        StartThread.Start();
    }

    public void StartLoading() 
    {
    }

它有效.表格保持活动状态时,该方法正在执行.但我不知道如何在stop_Click事件上停止此线程.
Maye有另一种方法可以做我想要的吗?

最好的祝福
谢尔盖

解决方法

如果你在线程中做了一些循环,我建议你添加一个变量,如下所示:

在停止按钮中,添加以下内容:

bool isStopped = false;

在你的循环中:

while(yourCondition)
{
    if(isStopped)
       break;
}

这样,它更安全,可以确保您完成当前循环

但是如果你想立即终止它,那就是一个名为Thread.Abort()的函数

你必须像这样修改代码:

Thread StartThread = null;
private void start_Click(object sender,EventArgs e)
{
    StartThread = new Thread(StartLoading);
    StartThread.Start();
}

public void StartLoading() 
{
    StartThread.Abort();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读