首页 新闻 会员 周边

多线程问题请教

0
悬赏园豆:5 [已解决问题] 解决于 2016-05-03 14:07

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Threading;

namespace ddTest
{
public partial class Form1 : Form
{

private Thread t;
public Form1()
{
InitializeComponent();
t = new Thread(new ThreadStart(this.GoBut));
}

 

 

private void GoBut()
{
MessageBox.Show("线程测试");
System.Threading.Thread.Sleep(300);//暂停0.3秒

}

 

 

/// <summary>
/// 线程开始
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{

t.Start();
}
/// <summary>
/// 线程暂停
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{
t.Suspend();
}
/// <summary>
/// 线程恢复
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button5_Click(object sender, EventArgs e)
{
t.Resume();
}
/// <summary>
/// 线程结束
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button6_Click(object sender, EventArgs e)
{
t.Abort();
}
}
}

 

我做了4个按键,我想实现点一个按钮开始线程,一个暂停,一个恢复,一个结束,但是执行老是错误,提示线程 已退出 代码0(0x0)

87Super的主页 87Super | 初学一级 | 园豆:107
提问于:2016-05-02 11:11
< >
分享
最佳答案
0

你把这句

private void GoBut()
{
MessageBox.Show("线程测试");
System.Threading.Thread.Sleep(300);//暂停0.3秒
}
 

修改为

private void GoBut()
{
    do
{
...
}
while(true)

}
 

试试。

收获园豆:3
爱编程的大叔 | 高人七级 |园豆:30839 | 2016-05-02 11:52

非常感谢。可以的。但是比如我点了停止 t.Abort();,然后我重新点击t.Start();。那么是不是我在线程开始的时候需要新创建一个对象?

87Super | 园豆:107 (初学一级) | 2016-05-02 12:52

非常感谢。可以的。但是比如我点了停止 t.Abort();,然后我重新点击t.Start();,程序就会报错。那么是不是我在线程开始的时候需要新创建一个对象?

87Super | 园豆:107 (初学一级) | 2016-05-02 12:52

@87Super: Abort之后,线程就终止了。你在Start那儿需要判断一下。

爱编程的大叔 | 园豆:30839 (高人七级) | 2016-05-02 13:23

@爱编程的大叔: 终止以后 如果要重新启动 是不是要重新 t = new Thread(new ThreadStart(this.GoBut));

87Super | 园豆:107 (初学一级) | 2016-05-02 13:25
其他回答(1)
0

你要了解一下 ManualResetEvent

收获园豆:2
Yu | 园豆:12980 (专家六级) | 2016-05-02 14:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册