多线程之线程启动、参数、返回值.doc
《多线程之线程启动、参数、返回值.doc》由会员分享,可在线阅读,更多相关《多线程之线程启动、参数、返回值.doc(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本章概要: 1:如何新起线程 2:Thread传参数及取得返回值 3:IsBackground 4:异步调用中的参数和返回值 1:如何新起线程 新起一个线程的方法,可以使用Thread,BackgroundWorker ,ThreadPool,控件.BeginInvoke,委托.BeginInvoke,Timer。创建多线程处理应用程序的最可靠方法是使用 BackgroundWorker 组件。但是,当你需要对线程进行精细控制的时候,就需要Thread。总体来说,各种方法各有各的优点,在这里不做细说。 2:Thread传参数及取得返回值 Thread的有两个构造函数,其中一个使用参数是Thre
2、adStart,说明该线程在构造函数中不能带入参数。还有一个ParameterizedThreadStart,则可以为你的线程传入参数。还有一个方法是为你的线程方法提供一个包裹类,这也可以解决返回值的问题。不过,这种方法在我看来是最丑陋的写法(参考 大部分情况下,一个优良的写法是使用匿名函数,如下: int arg1 = 10; string arg2 = argument temp; Thread t1 = new Thread(new ThreadStart(delegate MessageBox.Show(arg1.ToString() + arg2); ); 以上的写法,仍然无法解决返
3、回值的问题。如果要获取返回值的,则使用委托或包裹类等其它方法。但以上方法解决了参数的问题。 3:IsBackground 必须注意IsBackground的问题,如果IsBackground为false的,则Windows程序在退出的时候,不会为你自动退出该线程。也就是实际上你的应用程序未结束。 4:异步调用中的参数和返回值 能完美解决参数和返回值的是使用异步调用的方式。异步调用和Thread相比,一个最大的劣势是不能控制其优先级。 首先,看代码: 代码段1: public delegate string FuncHandle(int data1, int data2); FuncHandle
4、 fh ; private void BT_Temp_Click(object sender, RoutedEventArgs e) fh = new FuncHandle(this.Foo); AsyncCallback callback = new AsyncCallback(this.AsyncCallbackImpl); fh.BeginInvoke(1, 3, callback, null); public void AsyncCallbackImpl(IAsyncResult ar) string re = fh.EndInvoke(ar); MessageBox.Show( +
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多线程 线程 启动 参数 返回
限制150内