zoukankan      html  css  js  c++  java
  • C#多线程多参数传递

    之前做了一个小的应用程序,用的是c#语言,涉及到了多线程的多参数传递,经过查找资料总结了一下解决方案!

    第一种解决方案的原理是:将线程执行的方法和参数都封装到一个类里面。通过实例化该类,方法就可以调用属性来实现间接的类型安全地传递多个参数。看如下代码:

    using System;
    using System.Threading;

    //ThreadWithState 类里包含了将要执行的任务以及执行任务的方法
    public class ThreadWithState {
    //要用到的属性,也就是我们要传递的参数
    private string boilerplate;
    private int value;

    //包含参数的构造函数
    public ThreadWithState(string text, int number)
    {
    boilerplate = text;
    value = number;
    }

    //要丢给线程执行的方法,本处无返回类型就是为了能让ThreadStart来调用
    public void ThreadProc()
    {
    //这里就是要执行的任务,本处只显示一下传入的参数
    Console.WriteLine(boilerplate, value);
    }
    }
    ---------------分隔线---------------
    //用来调用上面方法的类,是本例执行的入口
    public class Example {
    public static void Main()
    {
    //实例化ThreadWithState类,为线程提供参数
    ThreadWithState tws = new ThreadWithState(
    “This report displays the number {0}.”, 42);

    // 创建执行任务的线程,并执行
    Thread t = new Thread(new ThreadStart(tws.ThreadProc));
    t.Start();
    Console.WriteLine(“Main thread does some work, then waits.”);
    t.Join();
    Console.WriteLine(
    “Independent task has completed; main thread ends.”);
    }
    }
    从上面的例子就能很清楚的得到我们想要的结果,注意这句代码的用法:
    Thread t = new Thread(new ThreadStart(tws.ThreadProc));

    第二种解决方案是的原理是把多个参数封装成object来传递,然后在线程里使用时拆箱即可,看如下代码:

    ParameterizedThreadStart ParStart = new ParameterizedThreadStart(ThreadMethod);
    Thread myThread = new Thread(ParStart);
    object o = “hello”;
    myThread.Start(o);

    ThreadMethod如下:
    public void ThreadMethod(object ParObject)
    {
    //程序代码
    }

  • 相关阅读:
    websocket介绍
    阿里支付接口
    王爽 汇编 检测点 14.2
    如何用汇编写出一个心形图像
    王爽 汇编 实验12
    王爽 汇编 实验11
    王爽 汇编 实验10
    王爽汇编 检测点10.5
    二元选择排序
    螺旋矩阵
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332620.html
Copyright © 2011-2022 走看看