111,094
社区成员




public partial class Form1 : Form
{
Thread t;
public delegate void delegateM(int i);
delegateM dm;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
dm = m;
t = new Thread(Method);
t.Start();
}
void Method()
{
try
{
int i;
cnt: i = 0;
while (i < 300)
{
Thread.Sleep(10);
i++;
this.Invoke(dm, new object[] { i });//跨线程刷新窗体标题
Application.DoEvents();
}
Thread.Sleep(-1);//线程暂时停止
goto cnt;
}
catch
{ }
}
void m(int i)
{
this.Text = i.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
t.Resume();//继续执行线程
}
catch
{ }
}
}
public partial class Form1 : Form
{
Thread t;
public delegate void delegateM(int i);
delegateM dm;
AutoResetEvent are;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
are = new AutoResetEvent(false);
dm = m;
t = new Thread(Method);
t.Start();
}
void Method()
{
try
{
int i;
cnt: i = 0;
while (i < 300)
{
Thread.Sleep(10);
i++;
this.Invoke(dm, new object[] { i });//跨线程刷新窗体标题
Application.DoEvents();
}
are.WaitOne();//线程暂时停止
goto cnt;
}
catch
{ }
}
void m(int i)
{
this.Text = i.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
are.Set();//继续执行线程
}
catch
{ }
}
}
// 按钮控制全局标志suspend 为true还是false
private bool suspend = false;
...
int i = 0;
while (i < 300)
{
if (!suspend)
{
i++;
this.Invoke(dm, new object[] { i });//跨线程刷新窗体标题
}
Thread.Sleep(100); //就算没有暂停也适当等待,否则窗体无响应,直接显示300
// Application.DoEvents(); 没用的语句
}
// 后面的goto也没啥用。
private void MainForm_Load(object sender, EventArgs e)
{
new Thread(method).Start();
}
private AutoResetEvent threadEvent = new AutoResetEvent(false);
private void button1_Click(object sender, EventArgs e)
{
threadEvent.Set();
}
void Method()
{
try
{
int i;
cnt: i = 0;
while (i < 300)
{
Thread.Sleep(10);
i++;
this.Invoke(dm, new object[] { i });//跨线程刷新窗体标题
}
threadEvent.WaitOne();
goto cnt;
}
catch
{ }
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
tmr.Elapsed += new System.Timers.ElapsedEventHandler(tmr_Elapsed);
tmr.Start();
}
void tmr_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
i++;
if (i >= 300)
i = 0;
this.BeginInvoke(new Action(() => { m(i); }));
}
int i;
System.Timers.Timer tmr = new System.Timers.Timer(10);
void m(int i)
{
this.Text = i.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
tmr.Enabled = !tmr.Enabled;
}
}