我想用form中的按钮,控制有另一个类中的方法生成的线程,改如何实现。
举个例子:
这是类中的代码,通过方法write()获得一个字符串:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;namespace ProTest
{
class Thread1
{
public Thread1()
{ } string str;
public string my
{
get { return str; }
set {str = value; }
} public void write()
{
for (int i = 0; i <= 400; i++)
{
str = str + i.ToString(); Thread.Sleep(10);
}
} }
}在form中有开始(start)和暂停(pause)两个button,并用一个listbox来显示字符串 private void start_Click(object sender, EventArgs e)
{ Thread1 haha = new Thread1(); t = new Thread(new ThreadStart(haha.write));
t.Start();
while (t.IsAlive||t.ThreadState.ToString()=="Sleepping")
{ }
this.listBox1.Items.Add(haha.my);
}现在想用pause按钮来控制线程的暂停,并返回当前的字符串值,直接写click事件,没有反应,不知改如何操作,请大家帮忙!
举个例子:
这是类中的代码,通过方法write()获得一个字符串:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;namespace ProTest
{
class Thread1
{
public Thread1()
{ } string str;
public string my
{
get { return str; }
set {str = value; }
} public void write()
{
for (int i = 0; i <= 400; i++)
{
str = str + i.ToString(); Thread.Sleep(10);
}
} }
}在form中有开始(start)和暂停(pause)两个button,并用一个listbox来显示字符串 private void start_Click(object sender, EventArgs e)
{ Thread1 haha = new Thread1(); t = new Thread(new ThreadStart(haha.write));
t.Start();
while (t.IsAlive||t.ThreadState.ToString()=="Sleepping")
{ }
this.listBox1.Items.Add(haha.my);
}现在想用pause按钮来控制线程的暂停,并返回当前的字符串值,直接写click事件,没有反应,不知改如何操作,请大家帮忙!
解决方案 »
- acces数据库 查询某一段时间内的所有数据
- 下载的zipcsv格式文件解压缩出来只有1k
- 高分:關於windform中的tabControl的使用
- 怎么开发一个生成网站的工具?
- 求MIS系统基类设计代码及设计方案!!!
- 一个WinForm处理Message的问题,困惑!(请各位高手看看)
- List FirstOrDefault 多条件查找问题(有点绕啊,Linq理解不够希望大家帮忙)
- 如何运行外部命令?
- C#中怎么用IL DASM啊??它是STUDIO 自带的吗
- 求助,关于正则表达式?
- 请问在vs2005中,如何在panel中画图?比如说画一条直线?
- 如何快速显示二进制读入的数据呢?(可能描述有错)
声明到函数外面来,这样就可以了
是个公共变量t
{ }
你的程序一直在这个时间中执行吧
{
public Thread1()
{ }
string str;
AutoResetEvent _event = new AutoResetEvent(true);
public void Pause()
{
_event.Reset();
}
public void Run()
{
_event.Set();
} public string my
{
get { return str; }
set {str = value; }
} public void write()
{
for (int i = 0; i <= 400; i++)
{
_event.WaitOne();
str = str + i.ToString();
Thread.Sleep(10);
}
} }
最后要把_event.Close()了
{
Thread1 haha = new Thread1();
t = new Thread(new ThreadStart(haha.write));
t.Start(); MessageBox.Show("haha"); this.button4.Enabled = false;
}
假设我有两个或多个线程:thread1,thread2...
想在主程序里面让这些线程按顺序运行下去,要怎么实现?