C# lock

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 WindowsFormsApplication18
{


public partial class Form1 : Form
{
delegate void SetTextCallback(string text);

public Form1()
{
InitializeComponent();
}

public void SetText(string text)
{
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = this.textBox1.Text + "\r\n" + text;
}
}

private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = "";
Thread[] thd = new Thread[500];
int intI = 0;
for (intI = 0; intI < 50; intI++)
{
thd[intI] = new Thread(new ParameterizedThreadStart(thdText));
thd[intI].Name = " Thread" + intI.ToString();
thd[intI].IsBackground = true;
thd[intI].Start(intI);
}
}

/// <summary>
/// 线程调用的方法
/// </summary>
/// <param name="obj"></param>

private void thdText(object obj)
{
oper op = new oper();
int intI = Convert.ToInt32(obj);
SetText(op.addition());
}
}


public class oper
{
private static object obj = new object();
private static Single slgTotal;
public string addition()
{
lock (obj) //lock (this) 锁定的是当前实例
{
int intI = 0;
slgTotal = 0;
for (intI = 0; intI <= 50; intI++)
{
slgTotal = slgTotal + intI;
Thread.Sleep(5);
}
return slgTotal.ToString() + " thread:" + Thread.CurrentThread.Name;
}
}
}
}

posted on 2013-07-26 17:04  yuanchaost 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/yuanchao/p/3217469.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值