zoukankan      html  css  js  c++  java
  • c# 多线程 调用带参数函数

    我们如果定义不带参数的线程,可以用ThreadStart,带一个参数的用ParameterizedThreadStart。带多个参数的用另外的方法,下面逐一讲述。

    一、不带参数的

    namespace AAAAAA
    {
        class AAA
        {
            public static void Main()
            {
                Thread t = new Thread(new ThreadStart(A));
                t.Start();
                
                Console.Read();
            }
            
            private static void A()
            {
                Console.WriteLine("Method A!");
            }
        }
    }

    结果显示Method A!

    二、带一个参数的

    由于ParameterizedThreadStart要求参数类型必须为object,所以定义的方法B形参类型必须为object。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Threading;
    
    namespace AAAAAA
    {
        class AAA
        {
            public static void Main()
            { 
                Thread t = new Thread(new ParameterizedThreadStart(B));
                t.Start("B");
                
                Console.Read();
            }
            
            private static void B(object obj)
            {
                Console.WriteLine("Method {0}!",obj.ToString ());        
            }
        }
    }

    结果显示Method B!

    三、带多个参数的

    由于Thread默认只提供了这两种构造函数,如果需要传递多个参数,我们可以自己将参数作为类的属性。定义类的对象时候实例化这个属性,然后进行操作。

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Threading;
    
    namespace AAAAAA
    {
        class AAA
        {
            public static void Main()
            {
                My m = new My();
                m.x = 2;
                m.y = 3;
                
                Thread t = new Thread(new ThreadStart(m.C));
                t.Start();
                
                Console.Read();
            }
        }
            
        class My
        {
            public int x, y;
            
            public void C()
            {
                Console.WriteLine("x={0},y={1}", this.x, this.y);
            }
        }
    }

    结果显示x=2,y=3

    四、利用结构体给参数传值。

    定义公用的public struct,里面可以定义自己需要的参数,然后在需要添加线程的时候,可以定义结构体的实例。

    //结构体
    struct RowCol
    {
        public int row;
        public int col;
    };
    
    //定义方法
    public void Output(Object rc)
    {
        RowCol rowCol = (RowCol)rc;
        for (int i = 0; i < rowCol.row; i++)
        {
            for (int j = 0; j < rowCol.col; j++)
            Console.Write("{0} ", _char);
            Console.Write("
    ");
        }
    }
  • 相关阅读:
    剑桥雅思写作高分范文ESSAY96
    剑桥雅思写作高分范文ESSAY95
    剑桥雅思写作高分范文ESSAY94
    剑桥雅思写作高分范文ESSAY93
    剑桥雅思写作高分范文ESSAY92
    剑桥雅思写作高分范文ESSAY91
    PHP 伪静态规则写法RewriteRule-htaccess详细语法使用
    php页面静态常用函数
    正则函数[原则,能用字符串函数解决不用正则,速度问题]s
    使用xshell文件传输
  • 原文地址:https://www.cnblogs.com/tlduck/p/5550328.html
Copyright © 2011-2022 走看看