飘易博客(作者:Flymorn)
订阅《飘易博客》RSS,第一时间查看最新文章!
飘易首页 | 留言本 | 关于我 | 订阅Feed

C#多线程传递参数的方法

Author:飘易 Source:飘易
Categories:C#编程 PostTime:2013-1-25 16:08:46
正 文:
    C#多线程传递参数的方法主要有两种:使用ParameterizedThreadStart委托 和 采用lambda表达式。

方式一:使用ParameterizedThreadStart委托

如果使用了ParameterizedThreadStart委托,线程的入口必须有一个object类型的参数,且返回类型为void.
static void Main(string[] args)
         {
             string hello = "hello world";
             Thread thread = new Thread(new ParameterizedThreadStart(ThreadMainWithParameters));
             thread.Start(hello);  
             Console.Read();
         }
  
         static void ThreadMainWithParameters(object obj)
         {
             string str = obj as string;
             if(!string.IsNullOrEmpty(str))
                 Console.WriteLine("Running in a thread,received: {0}", str);
         }

     以上代码只能传递一个参数,如果有时我们向线程传递给多的参数,那种方式使用将有局限性(如果用类作为对象传递参数,那么需要要另外建立一个类,也稍有点麻烦)
     如果用这种方法我们密切要注意的就是ThreadMainWithParameters方法里的参数必须是object类型的,我们需要进行类型转换。此方法不作推荐。

方式二:采用lambda表达式

    对于lambda表达式不熟悉的可以查看微软MSDN上的说明文档。此处假设你熟悉。因为在大多数使用委托的时候我们一般也可以用lambda表达式的。
     static void Main(string[] args)
         {
             string hello = "hello world";  
             Thread thread = new Thread(() => ThreadMainWithParameters(hello));
             thread.Start();  
             Console.Read();
         }
  
         static void ThreadMainWithParameters(string str)
         {
              Console.WriteLine("Running in a thread,received: {0}", str);
         }

     此方法可以作为推荐方法,代码简便,方便我们使用。这个方法也可以传递多个参数。

via
作者:飘易
来源:飘易
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
上一篇:吐槽下:关于二手房征收20%个税
下一篇:Linux利用Squid搭建HTTP代理ip平台
2条评论 “C#多线程传递参数的方法”
1 78461
2013-2-16 2:08:06
rss无法订阅,google reader订阅后最新的一篇是12-11-24的《c#多线程频繁操作同一控件“未将对象引用设置到对象的实例”》
2 飘易
2013-4-27 17:34:15
google reader 即将退出历史舞台,本博客的rss地址:
www.piaoyi.org/rss.asp
发表评论
名称(*必填)
邮件(选填)
网站(选填)

记住我,下次回复时不用重新输入个人信息
© 2007-2010 飘易博客 Www.Piaoyi.Org 原创文章版权由飘易所有