c# 异步调用 Thread

异步调用中的方法还有就是直接操控线程,可以使用自己创建的线程,也可以使用线程池,线程池的好处就是可以复用,节省线程创建销毁的时间,另外还有排队 控制数量等的方便,下面就简答介绍一下用法。

对了线程方法一般使用的是无参数或者一个参数的方法,具体的例子也是转载别的人,看着也很通俗易懂

转载内容:

首先是无参数的

class Program
    {
        static void Main(string[] args)
        {
            //实例化类 起始我们也可以调用同一个类中的函数 这位师傅就是这么演示一下
            ThreadTest test = new ThreadTest();

            //创建thread类 构造函数的参数为我们的目标函数
            Thread thread1 = new Thread(test.Func2);
            
            //开始执行异步任务
            thread1.Start();
            Console.ReadKey();
        }
    }
    
    


    class ThreadTest
    {
        public void Func2()
        {
            Console.WriteLine("这是实例方法");
        }
    }

有参数的

class Program
    {
        static void Main(string[] args)
        {
            ThreadTest test = new ThreadTest();

            //有参调用实例方法,ParameterizedThreadStart是一个委托,input为object,返回值为void        //也就是说明该方式的异步只能接受一个输入 并且不能有返回值
            //多参数输入的解决办法是将参数创建为一个结构体 传入结构体就好了
            ParameterizedThreadStart ps= new ParameterizedThreadStart(test.Func1)

            //开始异步任务
            Thread thread1 = new Thread(ps);
            thread1.Start("有参的实例方法");  //附带上我们的参数
            Console.ReadKey();
        }
    }


    class ThreadTest
    {
        public void Func1(object o)
        {
            Console.WriteLine(o);
        }
    }
private void sum(int a,int b,int c)
//比如我们本来需要三个参数

struct sumarg
{
   public int a;
   public int b;
   public int c;
}


//我们可以通过创建结构体 赋值 然后传入异步线程
sumarg sg = new sumarg();
sg.a = 10;
sg.b = 3;
sg.c = 3;
//只需要传入sg就好了
private void sum(obj args)
{
    sumarg sg = (sumarg)args;
    int res =sg.a + sg.b + sg.c; 
}

转载自:

https://www.cnblogs.com/wyy1234/p/9166444.html

猜你喜欢

转载自blog.csdn.net/iamsongyu/article/details/85940053