您的位置:首页 > 编程语言 > C#

c#用一个线程同步的简单例子

2012-12-23 10:14 405 查看
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;

namespace csharp_xmlTransPortTest
{
public partial class Form1 : Form
{
public delegate void ThreadProcess();
public Form1()
{
InitializeComponent();

}

XmlDocument statusDoc = new XmlDocument();
public void xx()
{
thread0 = new Thread(new ThreadStart(startedcross));
thread0.Start();
thread1 = new Thread(new ThreadStart(started1cross1));
thread1.Start();
}

private int i = 100;
private Thread thread0;
private Thread thread1;
private object str = new object();
private void startedcross()
{
ThreadProcess tp = new ThreadProcess(started);
tp.BeginInvoke(null, null);
}

private void started1cross1()
{
ThreadProcess tp1 = new ThreadProcess(started1);
tp1.BeginInvoke(null, null);
}
private void started()
{
while (true)
{
//string str = "32";
lock (str)
{
if (i > 0)
{
textBox1.Text += ((i--).ToString() + "\r\n");
}
}
}
}

private void started1()
{
while (true)
{
lock (str)
{
if (i > 0)
{
textBox1.Text += ((i--).ToString() + "\r\n");
}
}
}
}

private void button1_Click(object sender, EventArgs e)
{
xx();
}

}
}


lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: