All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
PHP生成动态WAP页面_[PHP教程]
存储过程中调用C#写的DLL_[Asp.Net教程]
PHP技巧:动态网页技术PHP中关于类的几点使用技巧_[PHP教程]
PHP的特点与市场情况_php资料_编程技术
ASP.NET中利用VWD操作数据库_[Asp.Net教程]
C#应用:用Split()方法提取字符_[Asp.Net教程]
ASP.NET,2.0高级数据处理之处理控件事件_.net资料_编程技术
用PHP操作MySql数据库(分页)_[PHP教程]
PHP入门需要掌握的几种功能代码_[PHP教程]
用php实现gb2312和unicode(UTF-8)间的编码转换_[PHP教程]
Reading number is top 10 pictures
A beautiful girl to bud1
锄禾日了几个人?
采访谢楠
Ashlynn Brooke photograph of a group4
这才是真正的人体艺术3
Magnificent cloud1
Embarrassing things comic collection1
Household design classic black and white
The household of rural style is designed
China's zhejiang university to create the world's most light material
Download software ranking
Tram sex maniac 2 (H) rar bag10
网页特效实例大全
Unix video tutorial18
双旗镇刀客B
WebService在.NET中的实战应用教学视频 → 第4集
Unix video tutorial17
小黑猫大战两米大花蛇
Such love down(擒爱记)
Ashlynn Video5
I'm come from Beijing2
aaa published in(发表于) 2013/12/6 10:26:42 Edit(编辑)
关于线程的参数、“返回值”、及线程的中止_.net资料_编程技术

关于线程的参数、“返回值”、及线程的中止_.net资料_编程技术

关于线程的参数、“返回值”、及线程的中止_.net资料_编程技术-数科优化网

关于线程的参数(2.0)、“返回值”、及线程的中止


1.线程的参数:
有时候会想向辅助线程传递些信息,这里需要用到ParameterizedThreadStart 委托


示例:


private void btRunThread_Click(object sender, EventArgs e)
{
Thread t = new Thread(new ParameterizedThreadStart(this.ThreadRun));
t.Start(100);
}
private void ThreadRun(object o)
{
this.lbCompleted.Invoke((MethodInvoker)delegate { this.lbCompleted.Text = System.Convert.ToString(o); });
}


2.通过代理可以大致实现类似功能,示例:


class Program
{
static void Main(string[] args)
{
ThreadClass tc = new ThreadClass(new MyDlg(DlgMethod));
Thread thread = new Thread(new ThreadStart(tc.ThreadRun));
Console.WriteLine("second thread start");
thread.Start();
thread.Join();
Console.WriteLine("second thread completed");
Console.Read();
}
private static void DlgMethod(int i)
{
Console.WriteLine("Second Thread Result:{0}", i);
}
}
public delegate void MyDlg(int i);
class ThreadClass
{
private MyDlg myDlg;
public ThreadClass(MyDlg pDlg)
{
this.myDlg = pDlg;
}
public void ThreadRun()
{
int total = 0;
for (int i = 0; i < 100; i++)
{
total += i;
}
if (myDlg != null)
{
myDlg(total);
}
}
}


3.线程的中止:


(1).join方法


MSDN注释:在继续执行标准的 COM 和 SendMessage 消息泵处理期间,阻止调用线程,直到某个线程终止为止。


看得一头雾,自己试了一下,似乎线程在调用join方法之后,该线程抢占了所有的cpu时间,直到线程的任务完成。不知道是这是这样?


(2).abort方法


立即中止线程


(3).定义标识量


示例:


class Program
{
private static bool stop;
static void Main(string[] args)
{
stop = false;
Thread t = new Thread(new ThreadStart(ThreadRun));
t.Start();
Thread.Sleep(100);
stop = true;
Console.Read();
}
static void ThreadRun()
{
while (!stop)
{
Console.WriteLine("Do Some Work...");
}
}
}






添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.