using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace ThreadMutex
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;
}
private Thread thread1 = null;
private Thread thread2 = null;
private void ShowChar(char ch)
{
// lock (this)
{
richTextBox1.Text += ch;
}
}
private void thead1Show()
{
while (true)
{
ShowChar('a');
Thread.Sleep(60);
}
}
private void thead2Show()
{
while (true)
{
ShowChar('A');
Thread.Sleep(30);
}
}
private void button1_Click(object sender, EventArgs e)
{
thread1 = new Thread(new ThreadStart(thead1Show));
thread2 = new Thread(new ThreadStart(thead2Show));
thread1.Start();
thread2.Start();
button1.Enabled = false;
button2.Enabled = true;
}
private void button2_Click(object sender, EventArgs e)
{
thread1.Abort();
thread2.Abort();
button1.Enabled = true;
button2.Enabled = false;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (thread2 != null) thread2.Abort();
if (thread1 != null) thread1.Abort();
}
}
}
c#线程Lock
最新推荐文章于 2024-05-29 22:40:43 发布