设为首页 加入收藏

TOP

C#如何使用多线程
2014-11-24 14:21:33 来源: 作者: 【 】 浏览:1
Tags:如何 使用 线程

本人最近需要操作多线程,但是在C#中有一个问题,线程中操作主线程中的控件就会提示错误,或者操作有问题,为此可以使用委托代理的方法,以下是本人借鉴网上的内容自己编写的例子:(在解说之后附带程序代码)



上图为软件控件界面,ListView控件中在Columns可以添加列信息,但是为了得到上面的效果,需要将ListView控件中的View属相设置成Details


使用多线程需要引用System.Threading


此外,为了在不同的方法之间传递数据信息,可以设置全局变量:


public Thread thread = null;
public int iNo = 0;
public string strNo = null;


楼主发现,如果项目中包含多个界面,在界面之间传递数据的最好办法是添加类,在类中申请变量,本项目添加一个类CCValue,并在CCValue中定义变量


public static bool thStop = false;//申请bool型变量控制线程启停


开启按钮代码:


private void button1_Click(object sender, EventArgs e)
{
thread = new Thread(new ThreadStart(Dowork));
thread.Start();
}


退出按钮代码:(本按钮只是退出线程,并不是退出窗口)


private void button3_Click(object sender, EventArgs e)
{
CCValue.thStop = true;
thread.Join(1);
}


Hello按钮代码:(本按钮主要是为了测试是否真正的实现了多线程)


private void button2_Click(object sender, EventArgs e)
{
MessageBox.Show("Hello");
}


多线程操作代码:


public delegate void MyInvoke(string str1, string str2);


public void Dowork()
{
while (!CCValue.thStop)
{
if (CCValue.thStop)
{
break;
}
else
{
strNo = iNo.ToString().Trim();
MyInvoke mi = new MyInvoke(UpdateForm);
this.BeginInvoke(mi, new object[] { "我是文本框", strNo });//注意此处的new object[] { "我是文本框", strNo }与下面的


//UpdateForm(string param1,string param2)是变量对应的,


//也即是向方法UpdateForm(string param1,string param2)


//传送数据
Thread.Sleep(1000);
iNo++;
}
}
}
public void UpdateForm(string param1,string param2)
{
this.textBox1.Text = param1 + param2;
ListViewItem item = new ListViewItem(param1);
item.SubItems.Add(param2);
listView1.Items.Add(item);


}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇简单的jQuery选项卡插件 下一篇Android低版本工程放到高版本环境..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: